在轉過這裏之前,我已經掙扎了好幾天了。如何創建一個將字符串集合轉換爲整數的函數
我想構建一個函數,StringToInteger,將文本字符串轉換爲整數。我研究了網絡,並得到了迄今爲止,我有一些代碼將一個字符串,輸入到一個變量,一個整數。
DECLARE @YourString varchar(500)
SELECT @YourString='select'
;WITH AllNumbers AS
(
SELECT 1 AS Number
UNION ALL
SELECT Number+1
FROM AllNumbers
WHERE Number<LEN(@YourString)
)
SELECT
(SELECT
RIGHT('000'+CONVERT(varchar(max),ASCII(SUBSTRING(@YourString,Number,1))),3)
FROM AllNumbers
ORDER BY Number
FOR XML PATH(''), TYPE
).value('.','varchar(max)') AS NewValue
--OPTION (MAXRECURSION 500) --<<needed if you have a string longer than 100
我還發現,關於如何查詢表,表B,並將其結果發送到功能,並有一整套運行一些代碼。
SELECT
*
FROM
TableB
CROSS APPLY
dbo.StringToInteger(TableB.ColumnWithText) AS IntegerOutOfText
我的問題是,應該如何在上面的代碼進行調整,使其加載到數據庫的功能,當運行?我有多少嘗試,我不能讓SQL Server導入它作爲一個函數。
而我的另一個問題是,底部代碼應該如何調整,以便它調用該函數並讓它將整個查詢的結果集轉換爲一組數字。
問候 丹尼爾
它返回一個值,但不是數據類型integer,這是我需要的。我嘗試更改函數bigint(也是int)中的變量,但遇到:Msg 248,Level 16,State 1,Line 1 varchar值'050051051049'的轉換溢出了一個int列。 – user641605
同樣得到:Msg 8115,Level 16,State 2,Line 1 將表達式轉換爲數據類型bigint的算術溢出錯誤。 – user641605
@user這裏你可以看到int和bigint的最大尺寸http://msdn.microsoft.com/en-us/library/ms187745.aspx –