當前位置:首頁 » 編程語言 » sql語句中的判斷

sql語句中的判斷

發布時間: 2023-02-21 02:04:24

『壹』 sql語句中if判斷條件怎麼寫

sql語句中if判斷條件是結合select語句使用的。IF函數也能通過判斷條件來返回特定值,它的語法如下:IF(expr,result_true,result_false)。

expr是一個條件表達式,如果結果為true,則返回result_true,否則返回result_false。在一些場景中,IF函數和CASE WHEN是有同樣效果的,前者相對簡單,後者能應對更復雜的判斷。另外,IF函數還可以和聚合函數結合。

SQL其他情況簡介。

SQL是一種特殊目的的編程語言,是一種資料庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關系資料庫系統。

結構化查詢語言是高級的非過程化編程語言,允許用戶在高層數據結構上工作。它不要求用戶指定對數據的存放方法,也不需要用戶了解具體的數據存放方式,所以具有完全不同底層結構的不同資料庫系統, 可以使用相同的結構化查詢語言作為數據輸入與管理的介面。

『貳』 補充:SQL常用判斷語句和函數

select  ID,UserName,namer=( case when score <= '50') then  '實習'

                                                      when score > '50' and score <= '500'   then '村衛生員'

                                                      when score > '500' and score <= '1000'   then '村衛生員'

                                                      when score > '1000' and score <= '1500'  then '鄉衛生員'

                                                       else  '健康大使'   end

from table

where ...

參數一:check_expression

               將被檢查是否為 NULL的表達式。check_expression 可以是任何類型的。

參數二:replacement_value

                在 check_expression 為 NULL時將返回的表達式。replacement_value 必須與 check_expresssion 具有相同的類型。

返回類型:

                 返回與 check_expression 相同的類型。

注釋:

           如果 check_expression 不為 NULL,那麼返回該表達式的值;否則返回 replacement_value。

           例:ISNULL(T.sum, 0)

例如:a / b 但是b有可能是0,可以將表達式改為:

            case when b = 0 then 0 else   a/b   end

例如:a/b 但是a和b都是整型,那麼就需要用到decimal進行轉換

            case when b<>0 then convert(decimal(6,2))

例如:

          SELECT 10*1.0/4    結果為2.500000

          所以,如果我們要保留2位小數的話,語句如下:

          SELECT CAST (10*1.0/4 AS DECIMAL (18,2))

① SELECT 可以在一條語句里對多個變數同時賦值,而SET只能一次對一個變數賦值

     例如:SELECT @A = 'Y',@B = 'M'

                而SET要達到同樣的效果,需要:

                SET @A = 'Y'

                SET @B = 'M'

②表達式返回多個值時,用SET將會出錯,而SELECT將取最後一個值

     例如:假設Table這個表中有多個IsRight記錄

                SELECT @A = IsRight  FROM Table ---- 將取最後一個值

                SET @A = IsRight  FROM Table ---- 將報錯

③表達式無返回值,用SET將置變數值為NULL,用SELECT交保持變數值

    以下假定Table記錄為空

    SET @A = '初始值'

    SELECT @A = IsRight FROM Table  ---此時@A為'初始值'

    SET @A =(SELECT IsRight FROM Table)--此時@A為NULL

④使用標量子查詢時,如果無返回值,SET和SELECT一樣,都將置為NULL

    以下假定Table記錄為空

    SET @A = '初始化'

    SELECT @A = (SELECT IsRight FROM Table) ---此時@A為NULL

    SET @A  = (SELECT IsRight FROM Table)  ---此時@A為NULL

例如:select * from systemInfo as a

           select a.* .......

如圖1所示的RANK結果列,有三位同學是100分的,位於第一名狀態,93分的同學則是第4名的狀態

如圖1.而DENSE_RANK()函數則不同,三名100分的同學還是位於第一名狀態,93分的同學位於第2的狀態

如圖1.對所有記錄進行依次排序(1、2、3、4、5、、、)

如實際應用中需要進行分頁處理,就會用到這個函數。

例子如下:一頁顯示20行數據

set @sql = @sql + ' select  ROW_NUMBER() OVER ( ORDER BY '

if(@sorts <> '')

begin

set @sql = @sql + ' ave desc, '

end

set @sql = @sql + ' FatDate desc,CreateDate desc ) as no, '

set @sql = @sql + ' ID, TourCode, LinesName, FatDate into 【#tempA】』

//通過行號控制,這里只顯示20行

set @sql = @sql + 『select * top(20)from 【#tempA】where 1=1 』

if(@rows > 0)

begin

set @sql  = @sql + 『AND (no >』 + LTRIM(@rows) + 『)』

end

如圖1 ,對學生的成績進行分組,NTILE(常量),也就是說括弧裡面的常量是多少, 就分為幾組。

SQL CHECK 約束:CHECK 約束用於限制列中的值的范圍。

                                  如果對單個列定義 CHECK 約束,那麼該列只允許特定的值。

                                  如果對一個表定義 CHECK 約束,那麼此約束會在特定的列中對值進行限制。

SQL DEFAULT 約束:DEFAULT 約束用於向列中插入默認值。

                                    如果沒有規定其他的值,那麼會將默認值添加到所有的新記錄。

函數coalesce功能是返回參數中第一個非NULL值。

例如:coalese(boss,0) :如果boss為空,則返回0;如果boss不為空,則返回boss

           coalese(boss,null,1):如果boss為空,看下一個參數為null,則返回最後一個參數1;如果boss

                                                 不為空,則返回boss這個參數。

意思是name=apple,那麼返回0;否則的話返回null

意思是 如果 bonus is null , 那麼返回 0, 否則返回 bonus

例:select ID from table where ID in (『+ LTRIM(@ID)+』)

有時也需注意類型轉換問題。

if(@dateS <> 『』)

begin

set @sql = @sql + 『AND (DATEDIFF(day,『』『+@dateS+』』』,FatDay) >=0)』

end

if(@dateE <> 『』)

begin

set @sql = @sql + 『AND (DATEDIFF(day,『』『+@dateE+』』』,FatDay) <=0)』

end

1、①年齡:

select YEAR(GETDATE()) - substring('IDCard',7,4) as Age

     ②年齡:(精確到天)

select  datediff( year, '1988-1-18' , getdate())  -  case when datediff ( day, getdate(),  dateadd( year, datediff( year, '1988-1-18', getdate()), '1988-1-18')) >= 0  then  1  else  0  end

2、性別:

case when len(身份證號) = 15 and cast(substring(身份證號,15,1) as int) % 2 = 0 then '女'

         when len(身份證號) = 15 and cast(substring(身份證號,15,1) as int) % 2 = 1 then '男'

         when len(身份證號) = 18 and cast(substring(身份證號,17,1) as int) % 2 = 0 then '女'

         when len(身份證號) = 18 and cast(substring(身份證號,17,1) as int) % 2 = 1 then '男'

else null end  as Sex

3、所屬省份:

CASE LEFT(`card_id`,2) WHEN 11 THEN '北京' WHEN 12 THEN '天津' WHEN 13 THEN '河北' WHEN 14 THEN '山西' WHEN 15 THEN '內蒙古' WHEN 21 THEN '遼寧'

    WHEN 22 THEN '吉林' WHEN 23 THEN '黑龍江' WHEN 31 THEN '上海' WHEN 32 THEN '江蘇' WHEN 33 THEN '浙江' WHEN 34 THEN '安徽' WHEN 35 THEN '福建' WHEN      36 THEN '江西'

    WHEN 37 THEN '山東' WHEN 41 THEN '河南' WHEN 42 THEN '湖北' WHEN 43 THEN '湖南' WHEN 44 THEN '廣東' WHEN 45 THEN '廣西' WHEN 46 THEN '海南' WHEN 50 THEN '重慶' WHEN 51 THEN '四川'

    WHEN 52 THEN '貴州' WHEN 53 THEN '雲南' WHEN 54 THEN '西藏' WHEN 61 THEN '陝西' WHEN 62 THEN '甘肅' WHEN 63 THEN '青海' WHEN 64 THEN '寧夏' WHEN 65 THEN '新疆' END AS 所屬省份

一般寫程序時會出現一個頁面當中只顯示固定多少行,這個時候sql語句中就會出現通過判斷行號來實現

例如:

圖3即是對行號的sql語句實現。

接下來說說頁數的實現方法:

頁數則是類似於網頁上面分頁功能的實現。

select a, b, case b when '申請人' then 0 else 1 end as row 

from table

where 。。。

order by row,date asc

select sum(a.time-b.time)

from(select ElogID,time from 表名 where EventSubType = 1) a,(select data,time from 表名 where EventSubType = 2) b

where a.ElogID=b.ElogID

未完待續。。。。

『叄』 sql語句中的判斷

你是想添加一個說明欄位吧? select 後面加上:(case when ZuiDaKuCun>AnQuanKuCun then '出庫' when AnQuanKuCun <ZuixiaoKuCun then '生產' end) AS '備注'
格式就是這樣,不過你的表達貌似有問題,看你的意思是 出庫 和 生產 有可能同時出現?弄錯了吧?

『肆』 如何判斷SQL語句查詢的結果是不是正確的

如何判斷SQL語句查詢的結果是不是正確的?
方法一:把這個查詢的結果放到數據集中
然後用一個if判斷返回的數據集記錄數是否<=0
如果<=0的話則結果為空。
方法二:直接把SQL語句改成
SELECT
COUNT(*)
FROM
TableName
WHERE
Field=
『value』,如果返回結果=0的話即為空。

『伍』 SQL 語句判斷記錄是否存在

方法1:
判斷表中是否存在記錄的SQL語句
判斷表中是否存在記錄,我們慣常使用的語句是:
select COUNT(*) from tableName where conditions

方法2:
如果只是判斷記錄是否存在,而不需要獲取實際表中的記錄數還有一種推薦做法:
if exists (select * from tableName where conditions) select '1' else select '0'
通過返回值去判斷是否存在。

據推薦,第二種方法效率高些,但使用profiler工具分析
通過where條件過濾出100多條數據時。第一種方法的rtion明顯比第二種方法的低很多
也就是說,第一種效率高些。

『陸』 SQL判斷語句怎麼寫

select (case when c=1 then a, case when c=2 then b,....) from A

『柒』 SQL中的判斷語句

select
(case
when
b=c
then
a
else
b
end)
from
A

『捌』 在sql語句中怎麼判斷一個欄位是否包含在另一個字元串中

sql語句判斷一個欄位是否包含在另一個字元串中的方法

一、語句中使用到的函數有

1、CHARINDEX:函數返回字元或者字元串在另一個字元串中的起始位置。

語法:CHARINDEX ( expression1 , expression2 [ , start_location ] )

expression1是要到expression2中尋找的字元中,start_location是CHARINDEX函數開始在expression2中找expression1的位置。

CHARINDEX函數返回一個整數,返回的整數是要找的字元串在被找的字元串中的位置。假如CHARINDEX沒有找到要找的字元串,那麼返回0

2、rtrim:函數去除字元串右邊的空格符。

二、例子中的表格為:tt,結構數據如下

熱點內容
英雄聯盟登錄密碼在哪裡修改 發布:2024-11-08 07:25:16 瀏覽:515
努比亞有沒有免費雲存儲 發布:2024-11-08 07:08:18 瀏覽:569
主機什麼配置可以打絕地求生 發布:2024-11-08 07:08:18 瀏覽:988
方舟手游如何請入火影伺服器 發布:2024-11-08 07:05:57 瀏覽:311
ip6根伺服器最新消息 發布:2024-11-08 07:05:56 瀏覽:334
探探存儲的圖片在哪裡找 發布:2024-11-08 07:04:32 瀏覽:224
slp用什麼編譯器 發布:2024-11-08 07:04:16 瀏覽:413
三一重工天泵參數密碼是什麼 發布:2024-11-08 06:59:45 瀏覽:660
攻擊伺服器資料庫 發布:2024-11-08 06:45:57 瀏覽:909
godaddy的雲伺服器 發布:2024-11-08 06:44:43 瀏覽:444