當前位置:首頁 » 編程語言 » sql中判斷語句
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql中判斷語句

發布時間: 2023-06-05 10:11:40

sql中的判斷語句

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

㈡ SQL判斷語句怎麼寫

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

㈢ sql語句,怎樣判斷一個欄位中是否存在某一個值

可以參考下面的描述:

INSTR(C1,C2,I,J)

在一個字元串中搜索指定的字元,返回發現指定的字元的位置;

C1 被搜索的字元串

C2 希望搜索的字元串

I 搜索的開始位置,默認為1

J 出現的位置,默認為1

SQL> select instr(』oracle traning』,』ra』,1,2) instring from al;

INSTRING

---------

9

(3)sql中判斷語句擴展閱讀:

基本語句

MAX(欄位名) 取得一個表格欄最大的值

MIN(欄位名) 取得一個表格欄最小的值

SUM(欄位名) 把數據欄的值相加

求和:select sum(field1) as sumvalue from table1

平均:select avg(field1) as avgvalue from table1

㈣ 補充: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語句中能否含有if....else...判斷語句

SQL中沒有ifif....else...判斷語句,但有case…語句,而且是所有資料庫都支持的。

拓展資料:

程序中用法如下:

1、oracle和mysql資料庫都可以這樣寫CASE WHEN (RO.APPROVE_QUANTITY - NVL(tto.QUANTITY , 0 )) < 0 THEN 0 ELSE (RO.APPROVE_QUANTITY-NVL(tto.QUANTITY , 0 )) END surplusQuantity.

2、注意:NVL()是oracle資料庫中對欄位的非空校驗,如果欄位名為空,則賦值為逗號後面的值。

3、mysql中還有一種if...else的方法if(表達式, 表達式成立的值, 表達式不成立的值)
ifnull("欄位名", 值) -- 非空驗證。

㈥ SQL語句中如何使用含有ifelse判斷語句

if else語句只有在存儲過程,觸發器之類的才有,今天突然在sql上當滿足某種條件上要取不同的欄位值,一開始直接網上查找相關資料,哇,sql上不支持!!!
不過可以使用case when語句解決,各種資料庫都支持。
語法:
case when 條件1 then 結果1 when 條件2 then 結果2 else 結果N end1

可以有任意多個條件,如果沒有默認的結果,最後的else也可以不寫,
select case when col1 > 1 then col2 else col3 end from XXXtable

㈦ sql語句 判斷表數據是否存在另一個表中

工具/材料:Management Studio。

1、首先在桌面上,點擊「Management Studio」圖標。

㈧ 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 中的if 判斷 語句應該怎麼寫

sql中的if語句寫法和java中差不多,都是先定義變數再使用變數進行判斷。由於你的提問不是很清晰,我就自己的看法解答下你的問題:
如果你指的是查詢條件的話:select 需要查詢的欄位,若為所有欄位這里是* from 表名 where 查詢條件例如name='llo' and age='50';
如果你指的是sql代碼的話:
變數名 Number:=0;
變數名 Number:=0;Num為屬性
Select 欄位名 Into 變數名 from 表名 就不多寫了,條件同查詢條件結束時要有;號注意英文字元,這樣會把查詢到的欄位值賦給變數,當使用if語句進行判斷時,取到變數名進行判斷就好。if判斷語句同:if(變數名!=0) then
返回true時需要運行的語句
end if;
--為注釋

㈩ sql條件判斷語句

SELECT*
FROMISSUEBOND_INFOA,ISSUE_REMARK_INFOB
WHERE(B.REMARKNO<>'08'AND
B.REMARK_AMT<(SELECTSUM(A1.NOTIONAL_AMT)
FROMISSUEBOND_INFOA1
WHEREA1.ISSUE_DATE<A.ISSUE_DATE
ANDA1.REMARK_NO=A.REMARK_NO))
OR(B.REMARKNO='08'AND
B.REMARK_AMT<(SELECTSUM(A1.NOTIONAL_AMT)
FROMISSUEBOND_INFOA1
WHEREA1.ISSUE_DATE<A.ISSUE_DATE
ANDA1.REMARK_NO=A.REMARK_NO));

這兩條判斷就是一個

SELECT*
FROMISSUEBOND_INFOA,ISSUE_REMARK_INFOB
WHEREB.REMARK_AMT<(SELECTSUM(A1.NOTIONAL_AMT)
FROMISSUEBOND_INFOA1
WHEREA1.ISSUE_DATE<A.ISSUE_DATE
ANDA1.REMARK_NO=A.REMARK_NO);