2

我有一个包含以下字符串的变量:AL,CA,TN,VA,NY

我无法控制我在该变量中获得的内容(来自报告服务)

我需要让它看起来像这样:'AL','CA','TN','VA','NY'

我该怎么做呢?

4

5 回答 5

3
declare @x varchar(50) = 'AL,CA,TN,VA,NY'

select '''' + REPLACE(@x, ',', ''',''') + ''''
于 2009-04-03T03:28:35.817 回答
1

我最终做了一些非常相似的事情,我认为我会发布。(不过我会感谢米奇)

这需要照顾中间:

SET @StateList = REPLACE(@StateList, ',', ''',''')

然后引用边缘:

SET @WhereClause1 = @WhereClause1 + 'AND customerState IN (''' + @StateList + ''') '

于 2009-04-03T03:35:11.447 回答
0

对于更通用的答案,当您不知道您的输出到底是什么样子时,请使用正则表达式

这将使您可以匹配 [AZ]{2} 之类的内容并将其替换为“$&”。

一位评论者建议这对于这项任务来说太过分了——同意,如果你能保证你总是会得到一个这样的字符串。但是,其他人稍后会发现这些问题页面存在类似但不准确的问题,因此拥有其他选项会有所帮助。

于 2009-04-03T03:33:46.443 回答
0

不要打扰动态sql。

您需要将字符串转换为表格,以便 A、B、C、D

变成

价值 A B C D

使用类似 http://www.sqlusa.com/bestpractices/training/scripts/splitcommadelimited/的函数

那么你可以使用 CROSS APPLY (这就像加入一个表,但是一个由函数创建的表)或者你可以把它放在一个表变量中并加入到那个

于 2009-04-03T06:50:12.757 回答
0

我想知道下面的脚本是否在 SQL 中而不是在 T-SQL 中运行


DECLARE @tblName varchar(30) SET @tblName = CONVERT(VARCHAR(20),GETDATE(),112) + '表'

DECLARE @sql nvarchar(4000) SELECT @sql = 'CREATE TABLE "' + @tblName + '" (ID VARCHAR(15), Name VARCHAR(15))'

执行(@sql)

它给了你错误

消息 170,Sev 15:第 1 行:“20090714Table”附近的语法不正确。[SQL 状态 42000]

于 2009-07-14T11:52:00.513 回答