SQL 特殊函式

2021-05-22 21:39:32 字數 3119 閱讀 4149

1、coalesce()函式

---簡介---

t-sql的coalesce()函式能夠讓你指定多個表示式,而且coalesce()會返回組裡第乙個非空的值。要使用下面的形式,其中expression可以是任何資料型別,並能夠等於大多數合法的表示式:

case

when (expression1 is not null) then expression1

...when (expressionn is not null) then expressionn

else null

如果所有自變數(expression1-n)均為 null,則 coalesce 返回 null 值。

---示例---

create database dbtest

use dbtest

create table basic

([id] int identity(1,1) primary key,

[length] decimal null,

[height] decimal null,

[width] decimal null

)插入一條資料:

insert into basic values(null,null,null)

查詢語句:

select coalesce(length,height,width) from basic

--查詢結果:null

插入下列資料:

insert into basic values(1.00,null,null)

insert into basic values(2.00,null,null)

insert into basic values(3.00,null,null)

insert into basic values(null,4.00,null)

insert into basic values(null,5.00,null)

insert into basic values(null,6.00,null)

insert into basic values(null,null,7.00)

insert into basic values(null,null,8.00)

insert into basic values(null,null,9.00)

查詢語句:

★ select coalesce(max(height),0)+1.00 from basic

★ select cast(coalesce(length * 2, height, width * 3) as decimal ) as 'total list' from basic

查詢結果:

★7.00

★2、4、6、4、5、6、21、24、27;

/*我們一般用它來檢索索引(順序號,層次號),最大者id*/

返回任何表示式所占用的位元組數。

2.datalength

對 varchar、varbinary、text、image、nvarchar 和 ntext 資料型別特別有用,因為這些資料型別可以儲存可變長度資料。

null 的 datalength 的結果是 null。

---示例---

以上例為準,查詢語句:

select datalength(width) from basic

查詢結果:null、null、null、null、null、null、5、5、5(也就是decimal表示式占用地位元組數為5,int 為4,你可以試試其它的sql資料型別)

/*我們一般用於查詢將image,varbinary資料型別*/

3.sql server中兩個判斷是否為空的函式nullif和isnull的說明如下:

nullif():需要兩個引數

例子:nullif(a,b)

說明:如果a和b是相等的,那麼返回null,如果不相等返回a

select nullif('eqeqweqwe','1') 結果是eqeqweqwe

select nullif(1,1) 結果是null

a和b的型別要一致

isnull():需要兩個引數

例子:isnull(a,b)

說明:如果a和b同時為null,返回null,如果a為null,b不為null,返回b,如果a不為null,b為null返回a,如果a和b都不為null返回a

select isnull(null,null)結果是null

select isnull(null,33)結果是33

select isnull('ddd',null)結果是ddd

select isnull(44,33)結果是44

4.這個函式會返回乙個新增了分隔符的unicode字串, 這個函式會使得輸入的字串變為乙個合法的microsoft sql server的分隔了的標示符.

格式:quotename ( 'character_string' [ , 'quote_character' ] )

引數:'character_string'這是乙個unicode字元資料組成的字串. character_string 是乙個sysname並且其上限為128個字元, 如果你輸入超過128個字元, 那麼會返回null.

'quote_character'這是乙個單個字元的字串, 被指派用來作分隔符的. 它可以使單引號('), 左括號或右括號([]), 或者是雙引號("). 如果quote_character 沒被指定的話, 缺省會使用方括號.

舉例:

select 

quotename

('%'

+ 'awpatp'

+ '%'

,''''

)

結果:'%yunzhang%'

select 

quotename

('awpatp'

,'['

)

結果:[yunzhang]

sql 特殊函式

和union指令類似,intersect也是對兩個 sql 語句所產生的結果做處理的。不同的地方是,union基本上是乙個or 如果這個值存在於第一句或是第二句,它就會被選出 而intersect則比較像and 這個值要存在於第一句和第二句才會被選出 union是聯集,而intersect是交集。s...

2 4 3 特殊日期加減函式 sql

if exists select from dbo.sysobjects where id object id n dbo f dateadd and xtype in n fn n if n tf drop function dbo f dateadd go 特殊日期加減函式 對於日期指定部分的加...

SQL注入中的MySQL特殊函式

4 查詢拼接函式使用 在滲透測試中,有時會遇到字串在前端被截斷的情況,爆出的資料也就不完整,此時mysql的一些函式就非常好用了 group concat 將組中的字串連線成為具有各種選項的單個字串。concat s1,s2.sn 將字串 s1,s2 等多個字串合併為乙個字串 concat ws x...