截取字元串sql
❶ sql中where截取字元串字元
不管哪個庫,sql中一般都支持substring 或者它的變種 substr left right mid等
❷ 3.SQL字元串截取技巧
有時我們會臨時寫一些SQL腳本來統計一些東西,或者是提供視圖或者存儲過程給第三方使用。但是有些內容是串聯起來存在一個欄位中的。
比如:sMZ(民族) sLx(聯系方式)
01/漢族 tel:123456/qq:87654321/phone:13812345678
SELECT SUBSTRING('01/漢族',4,2) 漢族
SELECT RIGHT('01/漢族',2) 漢族 --也是一樣的
取民族很簡單 如果要取手機號phone 就比較麻煩了,因為我們不知道QQ是幾位的
或者qq電話可能沒有填寫了,單純依靠欄位長度截取不了的。
這樣就需要變通下了:
SELECT SUBSTRING('tel:123456/qq:87654321/phone:13812345678',
charindex('/phone','tel:123456/qq:87654321/phone:13812345678')+1,1000)
使用charindex獲取'/phone'字元的其實位置 嵌套SUBSTRING截取
如果在MySQL中還可以這樣:
substring_index('tel:123456/qq:87654321/phone:13812345678', '/', -1)
'phone:13812345678' 截取第一個 '/' (倒數)之後的所有字元
substring_index('tel:123456/qq:87654321/phone:13812345678', '/', 1)
'tel:123456' 截取第一個 '/' 之前的所有字元
❸ SQL SERVER 字元串截取
1.將字元串中從某個字元開始截取一段字元,替換成另一字元
select stuff('helloworld!',4,4,'****')
hel****rld!
2.指定字元串起始位置,截取指定長度
select substring('helloworld!',4,5)
lowor
3.替換指定字元串
select replace('helloworld!','ld','aa')
helloworaa!
4.去除字元串兩端空格
select ltrim(' helloworld!')
helloworld!
5.用0替換NULL【isnull( )】
select ISNULL(KCRKD2_SCDDLS,0) from KCRKD2
返回0
6.取字元串,再轉化為整數
select convert(float,substring(xsddmx_wlbh,6,3)) from XSDDMX
7.字元串前三個是固定的,後面長度是變化的用LEN()取字元串長度,去掉前三個字元(截取右端固定字元數換成LEFT)
SELECT RIGHT(KCRKD3_JH,LEN(KCRKD3_JH)-3) FROM KCRKD3
返回B160459B01487
8.從『-』向後截取8位字元(charindex()返回字元位置)
select SUBSTRING('E03AHJC-E1701005020184',charindex('-','E03AHJC-E1701005020184')+1,8)
9. replace將『h』替換
SELECT REPLACE('Hello,World!','h','2') 2ello,World!
SELECT REPLACE('Hello,World!','h','') ello,World!
SELECT REPLACE('Hello,World!',' ','2') Hello,World!
10.復制字元
select REPLICATE('Hello,World!',3)
時間函數
1.截取兩個時間的時間差
select DATEDIFF(D,TMBASE_DATE,GETDATE()) from TMBASE
❹ 如何從多個位置截取字元串的SQL語句
SQL 中從多個位置截取字元串,需要配合left,right,rtrim三個函數來實現。
一、函數語法:
1、left()
LEFT (<character_expression>, <integer_expression>)
返回character_expression 左起 integer_expression 個字元。
2、RIGHT()
RIGHT (<character_expression>, <integer_expression>)
返回character_expression 右起 integer_expression 個字元。
3、LTRIM(character_expression) 把字元串character_expression頭部的空格去掉。
4、RTRIM(character_expression) 把字元串character_expression尾部的空格去掉。
二、代碼實例:
圖中以:表a,ID為2,C列的值「12345678」為例:
其中最後一句中的right(rtrim(c),1),是因為字元只有8位,在right函數中,系統自動按C列定義的長度使用空格補足。也就是說如果是right(c,1)返回空字元「」,所以使用rtrim(c)把右邊空格刪除。
❺ sql 如何截取一個欄位里某一字元串中間的字元
--這個查詢需要注意的是qwer後的需要查詢的字元串必須是一個空格,不能有的是一個空格有的是兩個。也就是格式要固定。
--定義參數
create table #a (string varchar(max))
declare @sql varchar(max)
declare @a varchar(max)
select @a ='asdf qwer zxcv 1234 qwer yuchor 3452 qwer abcd 7893'--這個是要查詢的字元串
---------------------------查詢qwer後面的字元串----------------------------------------
while charindex('qwer',@a)<>0
begin
select @a=SUBSTRING ( @a,charindex('qwer',@a)+5,LEN(@a)-charindex('qwer',@a)-4)
insert into #a values (@a)
end
select SUBSTRING (LTRIM ( string) ,1,charindex(' ',LTRIM ( string))) as result from #a
--查詢結果
result
zxcv
yuchor
abcd
❻ sql資料庫截取字元串函數
SQL截取字元串函數:
A.截取從字元串左邊開始N個字元
以下是代碼片段:
Declare
@S1
varchar(100)
Select
@S1='http://www.xrss.cn'
Select
Left(@S1,4)
------------------------------------
顯示結果:
http
B.截取從字元串右邊開始N個字元(例如取字元www.163.com)
以下是代碼片段:
Declare
@S1
varchar(100)
Select
@S1='http://www.163.com'
Select
right(@S1,11)
------------------------------------
顯示結果:
www.163.com
C.截取字元串中任意位置及長度(例如取字元www)
以下是代碼片段:
Declare
@S1
varchar(100)
Select
@S1='http://www.xrss.cn'
Select
SUBSTRING(@S1,8,3)
------------------------------------
顯示結果:
www
以上例子皆是已知截取位置及長度,下面介紹未知位置的例子
2.截取未知位置的函數
A.截取指定字元串後的字元串(例如截取http://後面的字元串)
方法一:
以下是代碼片段:
Declare
@S1
varchar(100)
Select
@S1='http://www.xrss.cn'
Select
Substring(@S1,CHARINDEX('www',@S1)+1,Len(@S1))
------------------------------------
顯示結果:
www.163.com
需要注意:CHARINDEX函數搜索字元串時,不區分大小寫,因此CHARINDEX('www',@S1)也可以寫成CHARINDEX('WWW',@S1)
方法二:(與方法一類似)
以下是代碼片段:
Declare
@S1
varchar(100)
Select
@S1='http://www.xrss.cn'
Select
Substring(@S1,PATINDEX('%www%',@S1)+1,Len(@S1))
--此處也可以這樣寫:Select
Substring(@S1,PATINDEX('%//%',@S1)+2,Len(@S1))
------------------------------------
顯示結果:
www.163.com
函數PATINDEX與CHARINDEX區別在於:前者可以參數一些參數,增加查詢的功能
方法三:
以下是代碼片段:
Declare
@S1
varchar(100)
Select
@S1='http://www.xrss.cn'
Select
REPLACE(@S1,'http://','')
------------------------------------
顯示結果:
www.163.com
利用字元替換函數REPLACE,將除需要顯示字元串外的字元替換為空
方法四:
以下是代碼片段:
Declare
@S1
varchar(100)
Select
@S1='http://www.xrss.cn'
Select
STUFF(@S1,CHARINDEX('http://',@S1),Len('http://'),'')
------------------------------------
顯示結果:
www.163.com
函數STUFF與REPLACE區別在於:前者可以指定替換范圍,而後者則是全部范圍內替換
B.截取指定字元後的字元串(例如截取C:\Windows\test.txt中文件名)
與A不同的是,當搜索對象不是一個時,利用上面的方法只能搜索到第一個位置
方法一:
以下是代碼片段:
Declare
@S1
varchar(100)
Select
@S1='C:\Windows\test.txt'
select
right(@S1,charindex('\',REVERSE(@S1))-1)
-------------------------------------
顯示結果:
text.txt
利用函數REVERSE獲取需要截取的字元串長度
❼ 【搬運】Sql Server中截取字元串的常用方法
1、LEFT() 從左邊截
語法:LEFT(character,integer) 返回 從字元串左邊開始 指定個數的字元
說明:參數1:要截取的字元串,參數2:截取字元個數
示例:selectLEFT('SqlServer_2008',3)
結果:Sql
2.RIGHT() 從右邊截
語法:RIGHT(character,integer) 返回 從字元串右邊開始 指定個數的字元
說明:參數1:要截取的字元串,參數2:截取字元個數
示例:selectLEFT('SqlServer_2008',4)
結果:2008
3.SUBSTRING() 中間截
語法:SUBSTRING(character,start,length) 返回從字元串 中間 的字元
說明:參數1:要截取的字元串,參數2:開始截取的位數,參數3:要截取的字元長度
示例:selectSUBSTRING('SqlServer_2008',4,6)--4)
結果:Server
以上。
https://www.cnblogs.com/xielong/p/7670757.html
感謝二位!
❽ sql語句,如何截取指定欄位某一個字元出現後的後面的字元串嗎
工具/材料:Management Studio。
1、首先在桌面上,點擊「Management Studio」圖標。
❾ sql server截取某個特定字元前的字元串
left(列名,charindex(特定字元,列名)-1)
left:返回從左邊開始指定字元串
charindex:找到特定並返回字元所在位置
select left(case_name,charindex('_',case_name)-1) from table1 where charindex('_',case_name)-1 > 0
注意:不加where後面的條件會報 「傳遞給 LEFT 或 SUBSTRING 函數的長度參數無效」的錯誤。