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

sql語句行號函數

發布時間: 2023-03-13 13:44:39

㈠ 補充: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 server 怎麼查行號

SQL Server查詢本身不提供行號,需要通過row_number函數來自己構建。
SQL Server版本:SQL Server 2008 R2
要添加行號,可用如下語句:

select row_number() over (order by 年齡) 行號,姓名,年齡,所任職務 from t

㈢ 如何使用SQL語句在每一條記錄前加上行號

sql中增加記錄用insert into 語句。
sql:insert into tablename( filname1,filename2...) valuse(values1,values2...);
解釋:上面的語句就是在tablename表中插入一條記錄,插入記錄中filname1欄位的值是values1,filname2欄位的值是values2。

㈣ SQL 2000列表中顯示特定的行(例如6-11行)

sql server中沒有類似於oracle中用來表示行號的「rownum」這樣的關鍵字,所以只能自行構造一個來完成查詢指定行的功能。如果在建表時就定義了一個自動遞增的行號列問題就簡單了,但有時表中沒有定義這樣的列,那就只能用其它辦法來處理。

有一種思路是給要查詢的表臨時增加一個行號列,保存在一個臨時表中,然後從這個臨時表查詢需要的指定行數據,查詢完成後刪除臨時表。用下面的語句實現:

1、用IDENTITY函數給表tablename構建帶行號的臨時表#temp:

select IDENTITY(int,1,1) as ROWNUM,* into #temp from tablename

2、從臨時表中查詢第6~11行的數據:

select * from #temp where ROWNUM between 6 and 11

3、刪除臨時表#temp:

drop table #temp

但這個方法對於很大的表肯定比較消耗資源,因為要復制出一個同樣的表來。看看哪位高人有更好的方法來實現。

㈤ sql查詢後的語句如何獲取行數

行號,是指在一定順序的記錄中排列的名次數。
在sql中,如果沒有排序,記錄順序是不一定的,
所以,也就不能確定行號(這叫已知條件不足吧)。
但是您如果告訴了要按什麼順序排列,就可以很簡單地求出行號。
比如按您給出的兩列col1,col2排序,就可以這樣求行號:
select
行號=(select
count(1)
from
tablename
a
where
a.col1*10000+a.col2<=tablename.col1*10000+tablename.col2),*
from
tablename
order
by
col1,col2

㈥ 如何通過sql語句在表中根據一個欄位插入行號

用DECODE 函數呢
我記得好象見到過用這個解決類似問題的 你查下用法 好象可以的
再加上序列應該可以
就是有點麻煩
我只是說下思路
用CREATE SEQUENCE sequence_name創建3個序列
然後用DECODE函數將S0990、S0991,S0992分別對應不同的序列
就行了
現在說下DECODE函數的用法吧 DECODE函數就是一個近似與if-then-else語句功能的函數
代碼挺麻煩的 你自己查下DECODE函數的用法然後自己琢磨吧

㈦ sql可以實現顯示行號記錄功能嗎

可以。

具體實在步驟如下(以SQL2008 英文版為例,附圖):

1、進入sql查詢分析器;

2、新建查詢窗口(New Query);

3、依次選擇菜單欄下的「工具」>>「選項」,進入選項小窗口(Tools>>Options);

4、在彈出的選項小窗口中,依次選擇「文本編輯」左側的加號>>「語言」>>(Text Editor >> All Languages);

5、在右側選項中,勾選「顯示」下的「行號」(Display>>Line numbers);

6、OK。