Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
逗号分隔的列表到字符串sql_Sql_Sql Server_Tsql_Replace_String Concatenation - Fatal编程技术网

逗号分隔的列表到字符串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', ',', "\',\'"), "\'")