【发布时间】:2009-04-03 03:22:09
【问题描述】:
我有一个包含以下字符串的变量:AL,CA,TN,VA,NY
我无法控制我在该变量中获得的内容(来自报告服务)
我需要让它看起来像这样:'AL','CA','TN','VA','NY'
我该怎么做?
【问题讨论】:
我有一个包含以下字符串的变量:AL,CA,TN,VA,NY
我无法控制我在该变量中获得的内容(来自报告服务)
我需要让它看起来像这样:'AL','CA','TN','VA','NY'
我该怎么做?
【问题讨论】:
declare @x varchar(50) = 'AL,CA,TN,VA,NY'
select '''' + REPLACE(@x, ',', ''',''') + ''''
【讨论】:
我最终做了一些我认为我会发布的非常相似的事情。 (不过,我要感谢 Mitch)
这照顾了中间:
SET @StateList = REPLACE(@StateList, ',', ''',''')
然后引用边缘:
SET @WhereClause1 = @WhereClause1 + 'AND customerState IN (''' + @StateList + ''')'
【讨论】:
对于更通用的答案,当您不知道您的输出究竟是什么样子时,请使用regular expressions。
这可以让您匹配 [A-Z]{2} 之类的内容并将其替换为 '$&'。
一位评论者建议这对这项任务来说太过分了 - 同意,如果你能保证你总是会得到这样的字符串。但是,其他人稍后会发现这些问题页面存在类似但不准确的问题,因此拥有其他选项会有所帮助。
【讨论】:
不要为动态 sql 操心。
您需要将字符串转换为表格 所以 A,B,C,D
变成
价值 一种 乙 C D
使用类似的函数 http://www.sqlusa.com/bestpractices/training/scripts/splitcommadelimited/
然后你可以使用 CROSS APPLY(这就像加入一个表,但是一个由函数创建的表),或者你可以将它放在一个表变量中并加入到该变量中
【讨论】:
我想知道下面的脚本是在 SQL 中运行而不是在 T-SQL 中运行
声明@tblName varchar(30) SET @tblName = CONVERT(VARCHAR(20),GETDATE(),112) + '表'
声明@sql nvarchar(4000) 选择@sql = '创建表“' + @tblName + '” ( ID VARCHAR(15), 名称 VARCHAR(15) )'
执行(@sql)
它会给你错误
消息 170,Sev 15:第 1 行:“20090714Table”附近的语法不正确。 [SQLSTATE 42000]
【讨论】: