Καταρχήν, θα πρέπει να δημιουργήσουμε μια "Table-valued Function" με όνομα CsvToInt
USE
[DATABASE ROOT NAME]
GO
SET
ANSI_NULLS ON
GO
SET
QUOTED_IDENTIFIER ON
GO
CREATE
Function [dbo]
.[CsvToInt]
(
@CsvLikeString VARCHAR(2000)
)
RETURNS
@IntTable
TABLE (ID
INT)
AS
BEGIN
IF @CsvLikeString <> ''
BEGIN
DECLARE @separator char(1)
SET @separator = ','
DECLARE @separator_position INT
DECLARE @array_value VARCHAR(2000)
SET @CsvLikeString = @CsvLikeString + ','
WHILE patindex('%,%' , @CsvLikeString) <> 0
BEGIN
SELECT @separator_position = patindex('%,%' , @CsvLikeString)
SELECT @array_value = LEFT(@CsvLikeString, @separator_position - 1)
INSERT @IntTable Values (CAST(@array_value AS INT))
SELECT @CsvLikeString = stuff(@CsvLikeString, 1, @separator_position, '')
END
END
RETURN
END
Και στη συνέχεια μπορούμε να την χρησιμοποιήσουμε με τον απλό τρόπο:
DECLARE @MyString varchar(50)
SET @MyString = '1,2,3,4,5,6'
SELECT * FROM CsvToInt(@MyString)