逗号分隔的列表到字符串sql
我需要从变量转换以下值:逗号分隔的列表到字符串sql,sql,sql-server,tsql,replace,string-concatenation,Sql,Sql Server,Tsql,Replace,String Concatenation,我需要从变量转换以下值: 1234,1234,12345,12346,1344,4564 为此: '1234','1234','12345','12346','1344','4564' 使用SQL函数 我试过: DECLARE @VAL AS VARCHAR(MAX) SELECT @VAL = '1234,1234,12345,12346,1344,4564' DECLARE @listStr VARCHAR(MAX) SELECT @listStr = COALESCE(@listSt
1234,1234,12345,12346,1344,4564
为此:
'1234','1234','12345','12346','1344','4564'
使用SQL函数
我试过:
DECLARE @VAL AS VARCHAR(MAX)
SELECT @VAL = '1234,1234,12345,12346,1344,4564'
DECLARE @listStr VARCHAR(MAX)
SELECT @listStr = COALESCE(@listStr+',' ,'') + @VAL
SELECT @listStr AS 'List'
GO
但我得到:
1234,1234,12345,12346,1344,4564
试试这个:
SELECT '''' + REPLACE('1234,1234,12345,12346,1344,4564', ',', ''',''') + '''';
选中此项
输出
| COLUMN_0 |
|---------------------------------------------|
| '1234','1234','12345','12346','1344','4564' |
编辑
| COLUMN_0 |
|---------------------------------------------|
| '1234','1234','12345','12346','1344','4564' |
使用用户定义的函数:
CREATE FUNCTION dbo.ufnReplace(@Val VARCHAR(MAX))
RETURNS VARCHAR(MAX)
AS
BEGIN
SELECT @Val = '''' + REPLACE(@Val, ',', ''',''') + '''';
RETURN @Val;
END;
SELECT dbo.ufnReplace('1234,1234,12345,12346,1344,4564');
使用REPLACE()
和CONCAT()
:
select''''+-replace(@yourvariable','','','')+''.
COALESCE从其参数返回第一个非空值。它与字符串操作无关。另外,不要使用varchar(max)
,它是作为BLOB使用的,而不是作为没有sizeUgh的方便字符串,为什么?然后,您是否要将@listStr
放入类似于('+@listStr+')中的WHERE列中?您真的应该研究表值参数,或者,如果您在<2008,则应该拆分字符串。UDF是什么?标量函数
select concat("\'", replace('1234,1234,12345,12346,1344,4564', ',', "\',\'"), "\'")