【问题标题】:Replace() in SQL isn't working with "SQL 中的 Replace() 不适用于“
【发布时间】:2016-05-17 15:57:29
【问题描述】:

我正在将一个 JSON 字符串接收到数据库中,我正在尝试将其转换为逗号分隔的列表。这是我目前的状态:

我的 SQL 目前看起来像:

BEGIN TRANSACTION

SELECT  Id, 
        PriorityGroups ,
        REPLACE(
            REPLACE(
                REPLACE(PriorityGroups, '["', ''), 
                    '"]', ''), 
                    '"."', ', ') AS 'Updated to comma delimited'
FROM    dbo.CA
WHERE   Id= 51

ROLLBACK TRANSACTION

无论出于何种原因,当我尝试替换时

“。”

使用逗号和空格,它不会对输出进行任何更改。我试过转义双引号,但有人告诉我这是无效的语法,我不太确定还能尝试什么!

【问题讨论】:

  • 在输入字符串中,这似乎是 "," -- 即 双引号、逗号、双引号,但您的替换搜索字符串是 "." 双引号、句号、双引号。但是这个字符串是如何进入你的数据库的呢?似乎在应用程序代码中进行这种转换会更容易(也许还可以将列表规范化到另一个表中)
  • @MichaelBerkowski 啊哈,是的,现在我看到它是如此明显 - 谢谢。它是从存储过程中输入的,所以我正在编写这段代码,然后在 sp 级别应用,所以本质上它是在应用程序级别调用的。在 Web 应用程序中解决它是没有意义的,因为它必须在其中许多中完成(因此它们都称为单个 sp)。感谢您的帮助!

标签: sql tsql replace sql-server-2012


【解决方案1】:

它不是"." 被替换成字符串。要替换的字符是","

SELECT  Id, 
        PriorityGroups ,
        REPLACE(
            REPLACE(
                REPLACE(PriorityGroups, '["', ''), 
                    '"]', ''), 
                    '","', ', ') AS 'Updated to comma delimited'
FROM    dbo.CA
WHERE   Id= 51

有效的 JSON 字符串以逗号分隔,而不是由句点 . 字符分隔

【讨论】:

  • 现在对我来说非常明显。我应该尝试复制/粘贴!谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-11
  • 2016-10-02
  • 2020-05-16
相关资源
最近更新 更多