【问题标题】:SQL Function to replace space with , and | with space and copy text (SQL Server 2008 R2)用 , 和 | 替换空格的 SQL 函数带空格和复制文本 (SQL Server 2008 R2)
【发布时间】:2013-04-12 16:38:13
【问题描述】:

我只是 SQL 脚本的初学者,我有一个字段 A 包含以下格式的字符串值:

X1|Y1 X2|Y2 X3|Y3 X4|Y4 X5|Y5

我正在尝试创建一个函数来将 space 替换为 ,然后替换 |有一个空格。之后,将 , 放在字符串的末尾,并将字符串“X1 Y1”中第一个空格逗号之前的字符粘贴到文本的末尾。 因此,B 字段中的结果文本将如下所示:

X1 Y1,X2 Y2,X3 Y3,X4 Y4,X5 Y5,X1 Y1

字段 A 和 B 的类型为:ntext

注意:我尝试使用替换函数,但收到错误消息:Argument data type ntext is invalid for argument 1 of replace function

谢谢

【问题讨论】:

  • 请通过添加适当的标签(Oracle、SQL Server、MySQL 等)指定您的目标关系数据库管理系统。可能有一些答案利用了不受普遍支持的语言或产品功能。此外,通过使用特定的 RDBMS 对其进行标记,您的问题可能会受到更适合回答的人的关注。

标签: sql tsql sql-server-2008-r2


【解决方案1】:

在 SQL Server 2008R2 中:

SELECT REPLACE(@mystring,'|',',') + ' ' + REPLACE(LEFT(@mystring,CHARINDEX(' ',@mystring)-1),'|',',')

@mystring 替换为您的字段名称。

【讨论】:

    【解决方案2】:

    MySQL:

    Select Replace(colName,"|",",")
    

    【讨论】:

    • 我使用的是 SQL Server 2008 R2
    • 感谢 jlareau 的回答。您能否建议如何将字符串中第一个空格之前的字符复制到末尾,以便生成的文本如下所示:X1,Y1 X2,Y2 X3,Y3 X4,Y4 X5,Y5 X1,Y1
    • 我不了解 SQL Server,但这适用于 MySQL:Select Replace(Concat(colName, " ",Left(colName, Locate(" ",colName) )) , "|" , ",");
    • 我很抱歉在发布后编辑问题。只是我意识到问题并不完全正确。
    【解决方案3】:

    您不能将 REPLACE 与 blob 字段一起使用,您应该先将其转换为字符串字段 试试这个:

    select replace(replace(cast(a as nvarchar(max)) + ' ' + left(cast(a as nvarchar(max)),
          charindex(' ', cast(a as nvarchar(max))) - 1),' ',','),'|',' ')
    from aaa
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-30
      • 1970-01-01
      • 1970-01-01
      • 2010-11-26
      • 2023-03-04
      • 1970-01-01
      • 2016-09-21
      • 1970-01-01
      相关资源
      最近更新 更多