sql字元串取數字
A. sql怎麼取字元串中的數字
select substring(所查詢字元串,patindex('%[^0-9][0-9]%',所查詢字元串)+1,patindex('%[0-9][^0-9]%',所查詢字元串)-patindex('%[^0-9][0-9]%',所查詢字元串))這個只能查詢第一次在字元串出現的數字串,希望可幫到你你
B. sql怎麼取字元串中的數字
declare@lssqlstrnvarchar(100)
declare@sumdecimal(15,2)
set@lssqlstr='exec'+n'usp_sum''5'',@b=@sumoutput'
select@lssqlstr
execsp_executesql@lssqlstr,n'@sumdecimal(15,2)output',@sumoutput
select@sum
C. 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我的方法要比他的好
http://book.csdn.net/bookfiles/530/10053017904.shtml
D. 在SQL語句中如何用正則取出一個字元串的前幾位數字
SQL 取字元串的前幾位數字,檔坦兄SQL 關鍵字 substring
substring 使用方法,參考下列SQL:
declare @T nvarchar(10)
set @T='12345abcde'
select substring(@T,1,5)
結果如下:12345
如果是SQL 寫正則表達式判斷,只能通過存儲過程或函數來處理
SQL 如下:
CREATE FUNCTION dbo.find_regular_expression
(
@source varchar(5000),信亂 --需要匹配的源字元串
@regexp varchar(1000),--正則表達式
@ignorecase bit = 0--是否區分大小寫,默認為false
)
RETURNS bit--返回結果0-false,1-true
AS
BEGIN
--0(成功)或非零數字(失敗),是由 OLE 自動化對象返回的 HRESULT 的整數值。
DECLARE @hr integer
--用於保存返回的對象令牌,以便之後對該對象進行操作
DECLARE @objRegExp integer DECLARE @objMatches integer
--保存結果
DECLARE @results bit
/*
創建 OLE 對象實例,只有 sysadmin 固定伺服器角色的成員才能執行 sp_OACreate,並確定機器中有VBScript.RegExp類庫
*/
EXEC @hr = sp_OACreate 'VBScript.RegExp', @objRegExp OUTPUT
IF @hr <> 0 BEGIN
SET @results = 0
RETURN @results
END
/*
以下三個分別是設置新建對象的三個屬性。下面是'VBScript.RegExp'中常用的屬性舉例:
Dim regEx,Match,Matches '建立變數。
Set regEx = New RegExp '建立一般表達式。
regEx.Pattern= patrn行襲 '設置模式。
regEx.IgnoreCase = True '設置是否區分大小寫。
regEx.Global=True '設置全局可用性。
set Matches=regEx.Execute(string) '重復匹配集合
RegExpTest = regEx.Execute(strng) '執行搜索。
for each match in matches '重復匹配集合
RetStr=RetStr &"Match found at position "
RetStr=RetStr&Match.FirstIndex&".Match Value is '"
RetStr=RetStr&Match.Value&"'."&vbCRLF Next
RegExpTest=RetStr
*/
EXEC @hr = sp_OASetProperty @objRegExp, 'Pattern', @regexp
IF @hr <> 0 BEGIN
SET @results = 0
RETURN @results
END
EXEC @hr = sp_OASetProperty @objRegExp, 'Global', false
IF @hr <> 0 BEGIN
SET @results = 0
RETURN @results
END
EXEC @hr = sp_OASetProperty @objRegExp, 'IgnoreCase', @ignorecase
IF @hr <> 0 BEGIN
SET @results = 0
RETURN @results
END
--調用對象方法
EXEC @hr = sp_OAMethod @objRegExp, 'Test', @results OUTPUT, @source
IF @hr <> 0 BEGIN
SET @results = 0
RETURN @results
END
--釋放已創建的 OLE 對象
EXEC @hr = sp_OADestroy @objRegExp
IF @hr <> 0 BEGIN
SET @results = 0
RETURN @results
END
RETURN @results
END
E. 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長度