1. 程式人生 > >MS-SQL Server字串處理函式大全

MS-SQL Server字串處理函式大全

  select語句中只能使用sql函式對欄位進行操作(連結sql server), select 欄位1 from 表1 where 欄位1.IndexOf("雲")=1; 這條語句不對的原因是indexof()函式不是sql函式,改成sql對應的函式就可以了。 left()是sql函式。 select 欄位1 from 表1 where charindex('雲',欄位1)=1; 字串函式對二進位制資料、字串和表示式執行不同的運算。此類函式作用於CHAR、VARCHAR、 BINARY、 和VARBINARY 資料型別以及可以隱式轉換為CHAR 或VARCHAR的資料型別。可以在SELECT 語句的SELECT 和WHERE 子句以及表示式中使用字串函式。常用的字串函式有:

一、字元轉換函式

1、ASCII() 返回字元表示式最左端字元的ASCII 碼值。在ASCII()函式中,純數字的字串可不用‘’括起來,但含其它字元的字串必須用‘’括起來使用,否則會出錯。
2、CHAR() 將ASCII 碼轉換為字元。如果沒有輸入0 ~ 255 之間的ASCII 碼值,CHAR() 返回NULL 。
3、LOWER()和UPPER() LOWER()將字串全部轉為小寫;UPPER()將字串全部轉為大寫
4、STR() 把數值型資料轉換為字元型資料。 STR (<float_expression>[,length[, <decimal>]]) length 指定返回的字串的長度,decimal 指定返回的小數位數。如果沒有指定長度,預設的length 值為10, decimal 預設值為0。當length 或者decimal 為負值時,返回NULL; 當length 小於小數點左邊(包括符號位)的位數時,返回length 個*; 先服從length ,再取decimal ; 當返回的字串位數小於length ,左邊補足空格。

二、去空格函式

1、LTRIM() 把字串頭部的空格去掉。
2、RTRIM() 把字串尾部的空格去掉。

三、取子串函式

1、left() LEFT (<character_expression>, <integer_expression>) 返回character_expression 左起 integer_expression 個字元。
2、RIGHT() RIGHT (<character_expression>, <integer_expression>) 返回character_expression 右起 integer_expression 個字元。
3、SUBSTRING() SUBSTRING (<expression>, <starting_ position>, length) 返回從字串左邊第starting_ position 個字元起length個字元的部分。

四、字串比較函式

1、CHARINDEX() 返回字串中某個指定的子串出現的開始位置。 CHARINDEX (<’substring_expression’>, <expression>) 其中substring _expression 是所要查詢的字元表示式,expression 可為字串也可為列名錶達式。如果沒有發現子串,則返回0 值。此函式不能用於TEXT 和IMAGE 資料型別。
2、PATINDEX() 返回字串中某個指定的子串出現的開始位置。 PATINDEX (<’%substring _expression%’>, <column_ name>)其中子串表示式前後必須有百分號“%”否則返回值為0。與CHARINDEX 函式不同的是,PATINDEX函式的子串中可以使用萬用字元,且此函式可用於CHAR、 VARCHAR 和TEXT 資料型別。

五、字串操作函式

1、QUOTENAME() 返回被特定字元括起來的字串。 QUOTENAME (<’character_expression’>[, quote_ character]) 其中quote_ character 標明括字串所用的字元,預設值為“[]”。
2、REPLICATE() 返回一個重複character_expression 指定次數的字串。 REPLICATE (character_expression integer_expression) 如果integer_expression 值為負值,則返回NULL 。
3、REVERSE() 將指定的字串的字元排列順序顛倒。 REVERSE (<character_expression>) 其中character_expression 可以是字串、常數或一個列的值。
4、REPLACE() 返回被替換了指定子串的字串。 REPLACE (<string_expression1>, <string_expression2>, <string_expression3>) 用string_expression3 替換在string_expression1 中的子串string_expression2。
5、SPACE() 返回一個有指定長度的空白字串。 SPACE (<integer_expression>) 如果integer_expression 值為負值,則返回NULL 。
6、STUFF() 用另一子串替換字串指定位置、長度的子串。 STUFF (<character_expression1>, <start_ position>, <length>,<character_expression2>) 如果起始位置為負或長度值為負,或者起始位置大於character_expression1 的長度,則返回NULL 值。如果length 長度大於character_expression1 中 start_ position 以右的長度,則character_expression1 只保留首字元。

六、資料型別轉換函式

1、CAST() CAST (<expression> AS <data_ type>[ length ])
2、CONVERT() CONVERT (<data_ type>[ length ], <expression> [, style])
1)data_type為SQL Server系統定義的資料型別,使用者自定義的資料型別不能在此使用。
2)length用於指定資料的長度,預設值為30。
3) 把CHAR或VARCHAR型別轉換為諸如INT或SAMLLINT這樣的INTEGER型別、結果必須是帶正號或負號的數值。
4)TEXT 型別到CHAR或VARCHAR型別轉換最多為8000個字元,即CHAR或VARCHAR資料型別是最大長度。
5)IMAGE型別儲存 的資料轉換到BINARY或VARBINARY型別,最多為8000個字元。
6)把整數值轉換為MONEY或SMALLMONEY型別, 按定義的國家的貨幣單位來處理,如人民幣、美元、英鎊等。
7)BIT型別的轉換把非零值轉換為1,並仍以BIT型別儲存。
8)試圖轉換到不同長度的資料型別,會截短轉換值並在轉換值後顯示“+”,以標識發生了這種截斷。
9)用CONVERT()函式的style 選項能以不同的格式顯示日期和時間。style 是將DATATIME 和SMALLDATETIME 資料轉換為字串時所選用的由SQL Server 系統提供的轉換樣式編號,不同的樣式編號有不同的輸出格式。

七、日期函式

1、 day(date_expression) 返回date_expression中的日期值
2、 month(date_expression) 返回date_expression中的月份值
3、 year(date_expression) 返回date_expression中的年份值
4、DATEADD() DATEADD (<datepart>, <number>, <date>) 返回指定日期date 加上指定的額外日期間隔number 產生的新日期。
5、DATEDIFF() DATEDIFF (<datepart>, <date1>, <date2>) 返回兩個指定日期在datepart 方面的不同之處,即date2 超過date1的差距值,其結果值是一個帶有正負號的整數值。
6、DATENAME() DATENAME (<datepart>, <date>) 以字串的形式返回日期的指定部分此部分。由datepart 來指定。
7、DATEPART() DATEPART (<datepart>, <date>) 以整數值的形式返回日期的指定部分。此部分由datepart 來指定。 DATEPART (dd, date) 等同於DAY (date) DATEPART (mm, date) 等同於MONTH (date) DATEPART (yy, date) 等同於YEAR (date) 8、GETDATE() 以DATETIME 的預設格式返回系統當前的日期和時間。

--聚合函式

use pubs go select avg(distinct price)
--算平均數 from titles where type='business' go use pubs go select max(ytd_sales)
--最大數 from titles go use pubs go select min(ytd_sales)
--最小數 from titles go use pubs go select type,sum(price),sum(advance)
--求和 from titles group by type order by type go use pubs go select count(distinct city)
--求個數 from authors go use pubs go select stdev(royalty)
--返回給定表達 式中所有值的統計標準偏差 from titles go use pubs go select stdevp(royalty)
-- 返回表示式中所有制的填充統計標準偏差 from titles go use pubs go select var(royalty)
-- 返回所有值的統計方差 from titles go use pubs go select varp(royalty)
--返回所有 值的填充的統計方差 from titles go
--數學函式 select sin(23.45),atan(1.234),rand(),PI(),sign(-2.34) --其中rand是獲得一個隨機數

--配置函式

--獲取當前資料庫版本 SELECT @@VERSION
--當前語言 SELECT @@LANGUAGE

--時間函式

select getdate() as 'wawa_getdate'
--當前時間 select getutcdate() as 'wawa_getutcdate'
--獲取utc時間 select day(getdate()) as 'wawa_day'
 --取出天 select month(getdate()) as 'wawa_month'
--取出月 select year(getdate()) as 'wawa_
--取出年 select dateadd(d,3,getdate()) as wawa_dateadd
--加三天,注意'd'表示天,'m'表示月,'yy'表示年,下面一樣 select datediff(d,'2004-07-01','2004-07-15') as wawa_datediff
--計算兩個時間的差 select datename(d,'2004-07-15') as wawa_datename
 --取出時間的某一部分 select datepart(d,getdate()) as wawa_datepart
--取出時間的某一部分,和上面的那個差不多 --字串函式 select ascii(123) as '123',ascii('123') as '"123"',ascii('abc') as '"abc"'
--轉換成ascii碼 select char(123),char(321),char(-123)
--根據ascii轉換成字元 select lower('ABC'),lower('Abc'),upper('Abc'),upper('abc') --轉換大小寫 select str(123.45,6,1), str(123.45,2,2)
--把數值轉換成字串 select ltrim(' "左邊沒有空格"')
--去空格 select rtrim('"右邊沒有空格" ')
--去空格 select ltrim(rtrim(' "左右都沒有空格" '))
--去空格 select left('sql server',3),right('sql server',6)
--取左或者取右 use pubs select au_lname,substring(au_fname,1,1)
--取子串 from authors order by au_lname select charindex('123','abc123def',2) --返回字串中指定表示式的起始位置 select patindex('123','abc123def'),patindex('%123%','abc123def')
--返回表示式中某模式第一次出現的起始位置 select quotename('abc','{'),quotename('abc')
--返回由指定字元擴住的字串 select reverse('abc'),reverse('上海')
--顛倒字串順序 select replace('abcdefghicde','cde','xxxx')
 --返回唄替換了指定子串的字串 select space(5),space(-2)
--系統函式 select host_name() as 'host_name',host_id() as 'host_id',user_name() as 'user_name',user_id() as 'user_id',db_name() as 'db_name'

--變數的定義使用

--宣告區域性變數 declare @mycounter int declare @last_name varchar(30),@fname varchar(20),@state varchar(2) --一下宣告多個變數
--給變數賦值 use northwind go declare @firstnamevariable varchar(20), @regionvariable varchar(30) set @firstnamevariable='anne' --可以用set,也可以用select給變數賦值,微軟推薦用set,但select在選擇一個值直接賦值時很有用 set @regionvariable ='wa' select lastname,firstname,title
--用宣告並賦值過的變數構建一個Select語句並查詢 from employees where firstname= @firstnamevariable or [email protected] go
--全域性變數 select @@version
--返回資料庫版本 select @@error
 --返回最後的一次指令碼錯誤 select @@identity
--返回最後的一個自動增長列的id


PS:以前搞Oracle多,現在改MS-Sqlserve了,重新學習。資料來自網路。

相關推薦

MS-SQL Server字串處理函式大全

  select語句中只能使用sql函式對欄位進行操作(連結sql server), select 欄位1 from 表1 where 欄位1.IndexOf("雲")=1; 這條語句不對的原因是indexof()函式不是sql函式,改成sql對應的函式就可以了。 left(

SQL Server 字串處理函式

--函式:CHARINDEX ( expressionToFind , expressionToSearch [ , start_location ] ) --功能:在一個字串中搜索指定的字元,返回發現指定的字元的位置 SELECT CHARINDEX('a','abcde

sql語句字串處理函式

函式 database() 查詢當前所使用的資料庫名 user() 或 current_user() 查詢當前使用者 version() 或 @@version 檢視當前資料庫的版本 文字處理函式 eg: mysql> SELECT LEFT('

SQL Server 字串函式

 在開發T-SQL時,經常會需要對字串進行各種各樣的操作,下面介紹常用的字串函式。 1、獲取字元的ASCII碼 ASCII     ASCII碼是對字元的標準編碼。要獲取字元的ASCII碼就可以通過呼叫ASCII函式來實現。     語法結構: ASCII(espression)   這裡的e

ms SQL server資料庫備份、壓縮與SQL資料庫資料處理的方法

ms SQL server資料庫備份、壓縮與SQL資料庫資料處理的方法 一、備份資料庫 1、開啟SQL企業管理器,在控制檯根目錄中依次點開Microsoft SQL Server 2、SQL Server組-->雙擊開啟你的伺服器-->雙擊開啟資料庫目錄 3、選擇你的資料庫名稱(如論

把IP字串轉化為數值格式的SQL Server自定義函式

create function ip2number (@ip varchar(16))returns bigintasbeginset @[email protected]+'.'declare @pos tinyintdeclare @num bigintdeclare @bin int,@off

MS SQL Server 資料庫連線字串詳解

問題 : 超時時間已到。在從池中獲取連線之前超時時間已過。出現這種情況可能是因為所有池連線都已被使用並已達到最大池大小。 解決辦法  1. 在程式碼裡面 , 把未關閉的連線關閉  2. 擴大共享池 , 方法如下 :解決方法可以是修改連線池的連線生存期 , 因為預設值是 6

【走馬觀花】SQL SERVER 2012 新增函式詳解-01.字串函式CONCAT

SQLSERVER 2012新增了兩個字串函式CONCAT和FORMAT。首先介紹一下CONCAT,CONCAT函式的作用是可以返回多個字串拼接後的結果。簡單示例:select CONCAT('a','b') as R1 /* R1 ---- ab */ select 'a'

MS SQL SERVER char 函式顯示ASCII的效果

SET @I= 0 SET @SQL = 'SELECT ' WHILE @I<256 BEGIN SET @EXECSQL = 'SELECT ''TXT1'' + CHAR(' + CAST(@I AS NVARCHAR(3)) + ') + ''TXT2'' AS CHAR' +CAS

SQL Server 查詢處理中的各個階段(SQL執行順序)

派生 步驟 sel 合成 emp lec 限制 對象 沒有 SQL 不同於與其他編程語言的最明顯特征是處理代碼的順序。在大數編程語言中,代碼按編碼順序被處理,但是在SQL語言中,第一個被處理的子句是FROM子句,盡管SELECT語句第一個出現,但是幾乎總是最後被處

MS SQL Server遷移至SQL Azure

工具 code strong 找到 很好 遠程執行 查看 選擇 不支持 SQL Server的數據目前是存在於公司服務器的,現時需要將它遷移至SQL Azure 遷移分兩種 數據庫結構復制 數據庫結構復制與數據遷移至SQL Azure 第1種方法針對的是將現有數據庫創建

MS Sql Server 中主從庫的配置和使用介紹

money mas 篩選 緩存 事務性 添加 com 對象 報表 https://technet.microsoft.com/zh-cn/ff806143.aspx 網站規模到了一定程度之後,該分的也分了,該優化的也做了優化,但是還是不能滿足業務上對性能的要求;這時候我們

MS SQL SERVER 數據庫導入到ORACLE的坑

支持 proto ros microsoft manage 不存在 bin 沒有 調用 將MS SQL SERVER 數據庫導入到ORACLE的坑 通過Sql Server Management Studio將SQL SERVER數據庫導入ORACLE過程遇到的坑 1.

MS SQL SERVER搜索某個表的主鍵所在的列名

視圖 尋找 屬性 serve 多個 數據庫管理 ble 觸發器 .com 原文:MS SQL SERVER搜索某個表的主鍵所在的列名 SELECT SYSCOLUMNS.name FROM SYSCOLUMNS,SYSOBJECTS,SYSINDEXES,SYSINDE

2017.7.8 MS SQL Server and BI workshop

biThis workshop was a free of charge. The trainner was Lihuan Song. He is the MVP. He introduced MS sql server and BI for us. The MS SQL server and BI so

SQL Server 異常處理機制(Begin try Begin Catch) 摘錄

RoCE nsa lan seve -- isa weight roc 錯誤信息 begin try --SQL end try begin catch --sql (處理出錯動作) end catch 我們將可能會出錯的sql 寫在begin try..

恭喜 maco_wang 成為 MS-SQL Server 非技術版 版主

cto com follow 歲月 這樣的 51cto 感覺 笑臉 寂寞 <p>  不知道,是怎麽的,就遇到了。不知道,是怎麽的就喜歡了,不知道,是怎麽的就愛上了,不知道,是怎麽的,就牽手了,不知道,是怎麽的,喜歡你的懷抱,就一直靜靜地抱著,天荒地老,海枯石爛。

MS SQL Server 定時任務實現自動備份

repl let onclick users get 監控 sqlcmd 沒有 arc SQL Server Express 版本是沒有SQL 代理服務的,從而導致不能使用SQL Server的定時自動備份功能。真心感覺這就是一個坑,雖然Express是學習的版本,但是精簡

SQL SERVER 字串按數字排序

需求是這樣的: 資料庫表裡面有一個欄位型別是nvachar,存的值是數字和字元混合的,要實現先按數字排序,再按字母倒序。 思路: 考慮這個欄位的值是否是有規律可循的,把要按數字排序的部分轉換為數字,再把剩下的字元排序。 資料表是下面這樣的: LevelName就是那

MS SQL Server遷移至Azure SQL(官方工具)

前面,我有嘗試過將MS SQL Server資料資料遷移至Azure SQL,請參考《MS SQL Server遷移至Azure SQL》,使用的是第三方工具,但現在官方更新了工具,我們嘗試使用新工具遷移MS SQL Server 參考地址:https://docs.microsoft.com/z