sql字元串中的數字
1. sql怎樣取出字元串中的數字
select
casewhenb.FModellike'%=%'thenSUBSTRING(b.FModel,CHARINDEX('=',b.FModel)+1,LEN(b.FModel)-CHARINDEX('=',b.FModel))
whenb.FModellike'%*%'thenSUBSTRING(b.FModel,0,LEN(b.FModel)-CHARINDEX('*',b.FModel))
endas長度
2. SQL語句提取字元串中數字
比如你的表叫作TALBE1,欄位是str1,類型為nvarchar,那麼找出有湘政發的最大號加1這樣寫
select
max(convert(int,substring(str1,patindex(N'%[1234567890]%',str1),len(str1)-patindex(N'%[1234567890]%',str1)+1-patindex(N'%[1234567890]%',reverse(str1))+1)))+1
from
table1
where
str1
like
N'%湘政發%'
測試通過,耗時很長,請認真試試。
這是sql
server
的寫法。
如果是ORACAL或其它的SQL語言您可以到這里參考一下。你會發現,用SQL
SERVER我的方法要比他的好
3. SQL怎麼取字元串中的數字
select substring(所查詢字元串,patindex('%[^0-9][0-9]%',所查詢字元串)+1,patindex('%[0-9][^0-9]%',所查詢字元串)-patindex('%[^0-9][0-9]%',所查詢字元串))這個只能查詢第一次在字元串出現的數字串,希望可幫到你你
4. sql如何截取字元串中前面的數字
如果提取字元串中的數字,需要自定義函數,以下函數包含截取字元串中的數字、字母、漢字等。
createfunctionfn_myget
(@strasvarchar(max),
@categoryasvarchar(10)='Chinese',
@startasint=1,
@endasint=100000)
returnsvarchar(max)
as
begin
declare@iint=@start
declare@lenstrint=len(@str)
declare@str1varchar(max)
declare@strrevarchar(max)=''
while@i<=@lenstrand@i<=@end
begin
set@str1=substring(@str,@i,1);
--提取漢字
if(@Category='Chinese')
begin
if(len(@str1)!=datalength(@str1))
set@strre=@strre+@str1
end
--提取字母
elseif(@Category='Letters')
begin
if((ascii(@str1)>=65andascii(@str1)<=90orascii(@str1)>=97andascii(@str1)<=122))
set@strre=@strre+@str1
end
--提取數字
elseif(@Category='Digital')
begin
if(ascii(@str1)>=48andascii(@str1)<=57)
set@strre=@strre+@str1
end
else
set@strre='輸入錯誤'
set@i=@i+1
end
return(@strre)
end
測試:
1、截取字元串dsajf23423423中的數字
selectdbo.fn_myget('dsajf23423423','Digital',1,1000)
結果:
自定義函數說明:
函數共需要4個參數:
第一個參數是要截取的字元串;
第二個參數根據要截取的內容不同,分別有「Digital」(截取數字)、「Letters」(截取字母)、「Chinese」(截取中文);
第三個參數代表截取的起始位;
第四個參數代表截取的截取的結束位。
5. SQL 查詢一列中,數字字元串中,最後一個數字欄位的簡單語句
where 欄位 like 『%1』
6. sql,字元串中取數字
1、創建測試表,
create table test_str(id int, v_str varchar2(20));
7. SQL-提取字元串中,兩個不同字元中間的數字
題主你好,
試試:
select regexp_substr(欄位名,"(?<=:).*(?=\})") from 表名;
-----
希望可以幫到題主,歡迎追問.