① 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截取字元串並替換
前面的分隔符取%,後面的分隔符是什麼?就是說,以什麼為分截取的依據?
沒消息了?只好亂猜一下
假設你後面的特徵是「0-9」或左圓括弧「(」,那麼可以這樣:
select
left(
substring(欄位名,charindex('%',欄位名)+1,len(欄位名)) ,
patindex('%[0-9(]%',substring(欄位名,charindex('%',欄位名)+1,len(欄位名) )+'0' )-1
)說明:
先按你的方法截取%後面的字串,
然後再從左側開始,截取到含有數字或左圓擴號的字元前面一個字元。
考慮到如果後面沒有數字或擴號的情況,後面預加了0字元,這樣當後面沒有要求的字元時,會取百分號後面的所有字元。
③ 簡單SQL語句,如何截取指定分隔符前字元串
一、用到的函數:substring(' ', , )、charindex(' ',' ')
select SUBSTRING('[email protected]',1,charindex('@','[email protected]')-1)
1.substring(字元串表達式,開始位置,長度):
從一個指定字元串的指定位置截取制定長度的字元;
第一個參數表示被截取的字元串;
第二個參數表示要在第一個參數中開始截取的位置;
第三個參數表示要截取的長度。
例如:select substring('abc123',1,2) →返回ab
從字元串『abc123』的第一個字元開始截取,共截取兩個字元,最後得到『ab』。
2.charindex(字元串表達式1,字元串表達式2[,整數表達式]):
在字元串2中查找字元串1,如果存在返回第一個匹配的位置,如果不存在返回0。如果字元串1和字元串2中有一個是null則返回null。
可以指定在字元串2中查找的起始位置。
例如:select charindex('ab','BCabTabD') → 返回3
select charindex('ab','BCabTabD',4) →返回6
二、用到的函數:left(' ', )、charindex(' ',' ')
select LEFT('[email protected]',charindex('@','[email protected]')-1)
1.left(字元串表達式,整數表達式):
從字元串表達式的最左邊開始截取整數表達式個字元。
例如:select left('abcdef',3) →返回abc
④ SQL中求截取字元串語句
可以通過substring方法實現。
sql: select substring('123456789',5,2) from al;
解釋:第一個參數表示要截取的字元串,第二個參數是起始位置,第三個參數是,截取的長度。
執行結果:56。
⑤ sql語句,能夠截取指定欄位後面的一個字元串嗎
可以的,需要用到charindex函數和substring函數。
CHARINDEX函數常常用來在一段字元中搜索字元或者字元串。
substring
public String substring(int beginIndex)
返回一個新的字元串,它是此字元串的一個子字元串。該子字元串始於指定索引處的字元,一直到此字元串末尾。
(5)infomxsql截取字元串擴展閱讀:
javascript示例
1 <scripttype="text/javascript">
2 varstr="Helloworld!"
3 document.write(str.substring(1,3));4 </script>上面返回字元串:"el";
str.substring(1,2) //返回e
str.substring(1) //返回"elloworld";
還有此函數中會出現奇怪的現象,當出現str.substring(5,0);
這又是怎麼回事,不過返回的是"Hello",
str.substring(5,1) //返回"ello",截去了第一位,返回餘下的.
可見substring(start,end),可以有不同的說明,即start可以是要返回的長度,end是所要去掉的多少個字元(從首位開始).
在JS中,substr(start,length),用得較方便.
CustomName包含客戶的First Name和Last Name,它們之間被一個空格隔開。我們用CHARINDX函數確定兩個名字中間空格的位置。通過這個方法,我們可以分析ContactName列的空格位置,這樣可以只顯示這個列的last name部分。
select top 5 substring(ContactName,charindex(' ',ContactName)+1,len(ContactName)) as [Last Name] from customers
CHARINDEX函數找到First Name和Last Name之間的空格,所以SUBSTRING函數可以分開ContactName列,這樣就只有Last Name被選出。在CHARINDEX函數返回的整數上加1,這樣Last Name不是從空格開始。
⑥ sql資料庫截取字元串函數
Oracle中 其語法為:
substr函數的用法,取得字元串中指定起始位置和長度的字元串 ,默認是從起始位置到結束的子串。
substr( string, start_position, [ length ] ) substr('目標字元串',開始位置,長度)
如:
substr('This is a test', 6, 2) would return 'is'
substr('This is a test', 6) would return 'is a test'
substr('TechOnTheNet', -3, 3) would return 'Net'
substr('TechOnTheNet', -6, 3) would return 'The'select substr('Thisisatest', -4, 2) value from al
⑦ sql 截取字元串
簡單的:
select substr(『04.06.02.063-48-Z952』,1,instr(『04.06.02.063-48-Z952』,'-',1,2)-1) from al ;
instr(04.06.02.063-48-Z952,'-',1,2)的意思是找到第二個出現的-號,然後減去1,把左邊都截取下來就ok了。
實際使用的時候,用欄位名替換那個字元串就ok了。
希望幫到你,請採納最佳。
⑧ 【搬運】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
感謝二位!