sqlserver中的常用函數(shù)總結(jié)

今日碰到個(gè)問題:要實(shí)現(xiàn)數(shù)據(jù)表中的一個(gè)字段中的文本為"xxx.gif"的轉(zhuǎn)換為"xxx.jpg",我不知道其具體名稱喳逛,只知道是以gif結(jié)尾瞧捌。
問題解決:update pet set petPhoto=substring(petPhoto,1,datalength(petPhoto)-3)+'jpg'
where petPhoto like '%.gif'
注意匹配符:“%”為匹配任意長度任意字符,“_”匹配單個(gè)任意字符,[A]匹配以A開頭的润文,[^A]匹配除開以A開頭的姐呐。知道函數(shù)是解決問題的關(guān)鍵(以下轉(zhuǎn)自網(wǎng)絡(luò)):

1,統(tǒng)計(jì)函數(shù) avg, count, max, min, sum
2典蝌, 數(shù)學(xué)函數(shù)
ceiling(n) 返回大于或者等于n的最小整數(shù)
floor(n), 返回小于或者是等于n的最大整數(shù)
round(m,n), 四舍五入,n是保留小數(shù)的位數(shù)
abs(n) 絕對值
sign(n), 當(dāng)n>0, 返回1曙砂,n=0,返回0,n<0, 返回-1
PI(), 3.1415....
rand(),rand(n), 返回0-1之間的一個(gè)隨機(jī)數(shù)
3骏掀,字符串函數(shù)
ascii(), 將字符轉(zhuǎn)換為ASCII碼, ASCII('abc') = 97
char(), ASCII 碼 轉(zhuǎn)換為 字符
lower()鸠澈,upper() 大小寫轉(zhuǎn)換
str(a,b,c)轉(zhuǎn)換數(shù)字為字符串。 a,是要轉(zhuǎn)換的字符串截驮。b是轉(zhuǎn)換以后的長度笑陈,c是小數(shù)位數(shù)。str(123.456,8,2) = 123.46
ltrim(), rtrim() 去空格 ltrim去左邊的空格,rtrim去右邊的空格
left(n), right(n), substring(str, start,length) 截取字符串
charindex(子串葵袭,母串)涵妥,查找是否包含。 返回第一次出現(xiàn)的位置眶熬,沒有返回0
patindex('%pattern%', expression) 功能同上妹笆,可是使用通配符
replicate('char', rep_time), 重復(fù)字符串
reverse(char),顛倒字符串
replace(str, strold, strnew) 替換字符串
space(n), 產(chǎn)生n個(gè)空行
stuff(), SELECT STUFF('abcdef', 2, 3, 'ijklmn') ='aijklmnef', 2是開始位置块请,3是要從原來串中刪除的字符長度娜氏,ijlmn是要插入的字符串。
3墩新,類型轉(zhuǎn)換函數(shù):
cast, cast( expression as data_type), Example:
SELECT SUBSTRING(title, 1, 30) AS Title, ytd_sales FROM titles WHERE CAST(ytd_sales AS char(20)) LIKE '3%'
convert(data_type, expression)
4,日期函數(shù)
day(), month(), year()
dateadd(datepart, number, date), datapart指定對那一部分加贸弥,number知道加多少,date指定在誰的基礎(chǔ)上加海渊。datepart的取值包括绵疲,year,quarter,month,dayofyear,day,week,hour,minute,second,比如明天dateadd(day,1, getdate())
datediff(datepart,date1,date2). datapart和上面一樣哲鸳。整個(gè)函數(shù)結(jié)果是date2 - date1
datename(datepart, date) 取那一部分,返回字符串盔憨。
datepart(datepart, date) 取一部分徙菠,返回整數(shù)。
getdate()當(dāng)前時(shí)間
5郁岩,系統(tǒng)函數(shù)
col_length('tablename','colname')
col_name, SELECT COL_NAME(OBJECT_ID('Employees'), 1) = EmployeeID
datalength, example: datalenght('abc') =3, datalength(pub_name) --列名
len,
for xml path('') 轉(zhuǎn)換成xml值婿奔,并去除根節(jié)點(diǎn)

備注說明:
Len函數(shù):

計(jì)算字符串長度的函數(shù),這個(gè)函數(shù)與oracle和db2函數(shù)不一樣问慎,那兩個(gè)數(shù)據(jù)庫用的是length萍摊,而sqlserver用的是LEN
select len('aaa') as length

ascii函數(shù):

這個(gè)函數(shù)返回字符串中最左側(cè)的字符的ASCII 碼,如果是一個(gè)字符的話如叼,那就返回該字符的ASCII 碼冰木,如果是多個(gè)字符的話,那就返回最左邊字符的ASCII 碼
select ascii('a') as ascii

charindex函數(shù):

查找字符串的位置:

語法為:charindex(字符串表達(dá)式 1, 字符串表達(dá)式2笼恰,[整數(shù)表達(dá)式])

該函數(shù)用法為:在字符串2 中查找字符串 1踊沸,如果存在就返回第一個(gè)匹配的位置,如果不存在返回0社证。如果字符串 1 和字符串 2 中有一個(gè)是null 則返回 null雕沿。后面的整數(shù)為字符串2 中查找的起始位置
select charindex('zain','zhuzainming') as chariindexs

left和right函數(shù)

語法為:left(str,index),在字符串str中返回左邊index個(gè)字符,

right(str,index),在字符串str中返回右邊index個(gè)字符

select left('zainzhu',2) as charindexs

select right('zainzhu',2) as charindexs

lower和upper函數(shù)

該函數(shù)主要是返回字符串的大小寫猴仑,這兩個(gè)函數(shù)與db2和oracle數(shù)據(jù)庫函數(shù)的使用一樣审轮。
select lower('zainzhu') as char
select upper('zainzhu') as char

ltrim和rtrim函數(shù):

ltrim函數(shù)去掉左邊空格,rtrim函數(shù)去掉右邊空格辽俗。但ms sqlserver沒有trim函數(shù)疾渣,這個(gè)與db2和oracle還是有點(diǎn)不一樣的
select ltrim(' zainzhu') as char
select rtrim('zainzhu ') as char
select 'zainzhu '

reverse函數(shù):
這個(gè)函數(shù)是反轉(zhuǎn)函數(shù),就是將函數(shù)按照逆序顯示出來崖飘。
select reverse('zainzhu')

字符串連接:
sqlserver字符串連接是用+連接多個(gè)字符串榴捡,這個(gè)與其它數(shù)據(jù)庫有點(diǎn)不一樣,其他數(shù)據(jù)庫用的是||

select 'A'+'b' as char

SUBSTRING函數(shù):

截取字符串函數(shù)朱浴,語法為:substring(str吊圾,index,len)

就是截取從字符串的第index位置開始翰蠢,截取len長度的字符串项乒。

select substring('zainzhu',2,3) as char

replace函數(shù)

這個(gè)函數(shù)為替換函數(shù),語法格式為:replace(str梁沧,str1檀何,str2)

就是用str2去替換字符串str中str1,然后返回一個(gè)新的字符串。

select replace('zainzhu','zhu','it')

isnull函數(shù):

這是關(guān)于空值的函數(shù)频鉴,語法格式為isnull(str1,str2)

如果字符串表達(dá)式str1為空栓辜,就返回字符串表達(dá)式str2。

否則就返回字符串表達(dá)式str1

注解:sqlserver中''不表示空垛孔,它不等同于null藕甩,這個(gè)和db2一樣。

select isnull(null,'zain') as char

coalesce函數(shù):

該返回不是null的第一個(gè)字符串周荐,

語法格式為:COALESCE (expression_1, expression_2, ...,expression_n)

用法為函數(shù)列表中第一個(gè)非空的表達(dá)式是函數(shù)的返回值辛萍,如果所有的表達(dá)式都是空值,最終將返回一個(gè)空值

select coalesce(null,null,'zain')

convert函數(shù):

數(shù)據(jù)類型的轉(zhuǎn)換羡藐,利用這個(gè)函數(shù)我們可以進(jìn)行任何數(shù)據(jù)的轉(zhuǎn)變贩毕。

select convert(varchar,getdate(),20) as char

cast函數(shù):
select cast('12' as int)

stuff函數(shù);
STUFF 函數(shù)將字符串插入到另一個(gè)字符串中。 它從第一個(gè)字符串的開始位置刪除指定長度的字符仆嗦;然后將第二個(gè)字符串插入到第一個(gè)字符串的開始位置辉阶。可用于刪除字符瘩扼,截取字符谆甜,替換字符
select stuff('zainzhu',1,1,'') as char
select stuff('zainzhu',1,1,'aaaa') as char

for xml path函數(shù):
select teacher,object from teach for xml path

根節(jié)點(diǎn)默認(rèn)是<row></row>,我們可以通過path后面的參數(shù)改變根節(jié)點(diǎn)名稱:
select teacher,object from teach for xml path('記錄')

一個(gè)小技巧: 可以通過path('')來去掉根節(jié)點(diǎn)
select teacher,object from teach for xml path('')

select teacher as '老師',
(select object+',' from teach t1 where t1.teacher=t2.teacher FOR xml path ('')) as '學(xué)科'
from teach t2
group by teacher

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末集绰,一起剝皮案震驚了整個(gè)濱河市规辱,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌栽燕,老刑警劉巖罕袋,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異碍岔,居然都是意外死亡浴讯,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門蔼啦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來榆纽,“玉大人,你說我怎么就攤上這事捏肢∧巫眩” “怎么了?”我有些...
    開封第一講書人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵鸵赫,是天一觀的道長衣屏。 經(jīng)常有香客問我,道長奉瘤,這世上最難降的妖魔是什么勾拉? 我笑而不...
    開封第一講書人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任煮甥,我火速辦了婚禮盗温,結(jié)果婚禮上藕赞,老公的妹妹穿的比我還像新娘。我一直安慰自己卖局,他們只是感情好斧蜕,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著砚偶,像睡著了一般批销。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上染坯,一...
    開封第一講書人閱讀 51,624評(píng)論 1 305
  • 那天均芽,我揣著相機(jī)與錄音,去河邊找鬼单鹿。 笑死掀宋,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的仲锄。 我是一名探鬼主播劲妙,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼儒喊!你這毒婦竟也來了镣奋?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬榮一對情侶失蹤怀愧,失蹤者是張志新(化名)和其女友劉穎侨颈,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體芯义,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡肛搬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了毕贼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片温赔。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖鬼癣,靈堂內(nèi)的尸體忽然破棺而出陶贼,到底是詐尸還是另有隱情,我是刑警寧澤待秃,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布拜秧,位于F島的核電站,受9級(jí)特大地震影響章郁,放射性物質(zhì)發(fā)生泄漏枉氮。R本人自食惡果不足惜志衍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望聊替。 院中可真熱鬧楼肪,春花似錦、人聲如沸惹悄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽泣港。三九已至暂殖,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間当纱,已是汗流浹背呛每。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留坡氯,地道東北人晨横。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像廉沮,于是被迫代替她去往敵國和親颓遏。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • -- 一滞时、常用數(shù)學(xué)函數(shù)-- 絕對值SELECTabs( - 32 );-- 32-- 返回N被M除的余數(shù) mod(...
    Boger_8cf1閱讀 354評(píng)論 0 0
  • [TOC] 日期函數(shù) SQL SERVER 的時(shí)間格式只能為YYYY-MM-DD HH:MM:SS或YYYY/MM...
    阿怪_9653閱讀 706評(píng)論 0 0
  • MySQL數(shù)據(jù)庫提供了很多函數(shù)包括: 數(shù)學(xué)函數(shù)叁幢; 字符串函數(shù); 日期和時(shí)間函數(shù)坪稽; 條件判斷函數(shù)曼玩; 系統(tǒng)信息函數(shù); ...
    Chting閱讀 313評(píng)論 0 0
  • [TOC] 日期函數(shù) MySQL對時(shí)間的格式無具體要求窒百,只要格式是 YYYY-MM-DD HH:MM:SS 其中:...
    阿怪_9653閱讀 415評(píng)論 0 0
  • 目錄:一黍判、關(guān)系運(yùn)算二、數(shù)學(xué)運(yùn)算三篙梢、邏輯運(yùn)算四顷帖、復(fù)雜的數(shù)據(jù)類型 array、map渤滞、struct五贬墩、復(fù)雜類型訪問操作...
    夜希辰閱讀 1,345評(píng)論 1 6