sql - 如何在 SQL Server 中为字符串中的每个字符添加逗号和单引号?

标签 sql sql-server

我有这个:

declare @data varchar = 'UI'

我需要解决这个问题,以便它可以与“IN”语句一起使用。

'UI' => 'U','I'

很难完成这件事。有人愿意帮忙吗?

谢谢!

最佳答案

您可以将临时统计表与 Stuff() 和 XML 结合使用。

示例

declare @data varchar(max) = 'UI'

Select S = Stuff((Select ',' +S
    From (
            Select S=''''+substring(@data,N,1)+''''
             From (Select Top (Len(@data)) N=Row_Number() Over (Order By (Select null)) From master..spt_values ) N
        ) B1
    For XML Path ('')),1,1,'') 

返回

'U','I'

如果您愿意接受 UDF,请进行编辑

Select S = Stuff((Select ',''' +RetVal + ''''
 From (Select * From [dbo].[udf-Str-Parse-Char](@data)) A 
 For XML Path ('')),1,1,'') 

UDF

CREATE FUNCTION [dbo].[udf-Str-Parse-Char] (@String varchar(max))
Returns Table
As
Return (
    with   cte1(N) As (Select 1 From (Values(1),(1),(1),(1),(1),(1),(1),(1),(1),(1)) N(N)),
           cte2(N) As (Select Top (IsNull(DataLength(@String),0)) Row_Number() over (Order By (Select NULL)) From cte1 a,cte1 b,cte1 c,cte1 d,cte1 e,cte1 f)

    Select RetSeq=N
          ,RetVal=Substring(@String,N,1) 
     From  cte2
) 
--Max 1 Million Observations
--Select * from [dbo].[udf-Str-Parse-Char]('this is a string') 

关于sql - 如何在 SQL Server 中为字符串中的每个字符添加逗号和单引号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43646712/

相关文章:

java - JAVA 形式的 SQL 语法 getText();

sql - Oracle SQL中的脚本错误

mysql - SQL,如何读出数据并按这种方式排序?

c# - 使用DataReader时,从性能角度看,执行SQL语句好还是存储过程好?

sql-server - FreeTDS 中的@变量

sql - 为什么在 View 中添加 ROW_NUMBER 需要花费太多时间来执行?

java - 无法编写 jooq 查询

sql-server - 如何从聚合查询中排除异常值?

sql - 即使已登录也删除 SQL 登录

sql-server - 复合增量列