gpt4 book ai didi

sql - 如何在 SQL 中替换字符串中的字符?

转载 作者:行者123 更新时间:2023-12-03 22:51:43 25 4
gpt4 key购买 nike

我的数据库中有 100 个单元格,其中包含 ?而不是 ' .这可能发生在所有行和列以及每个单元格中的多个单词中。这是一个只有一个单元格的示例。

Parents? CUI assumed equal to the sum of the father?s/stepfather?s and mother?s/ stepmother?s income .

我想编写一个 SQL 语句来查找包含 ? 的所有单元格(每个单元格可能不止一个)并将它们替换为 ' .我相信所有 ?必须无一异常(exception)地更换。

我知道有一个函数替换,但我不知道如何从 sql 中的字符串中提取一个字符。

这是我得到的一个例子,但它对我没有帮助。
UPDATE dbo.authors

SET city = replace(city, 'Salt', 'Olympic')
WHERE city LIKE 'Salt%';

有任何想法吗?

最佳答案

您确定数据库中存储的数据实际上是一个问号吗?我倾向于从样本数据中怀疑问题是字符集转换之一,其中 ?当无法在客户端字符集中表示字符时,将用作替换字符。可能,该数据库实际上存储的是 Microsoft 的“智能引号”字符,而不是简单的撇号。
DUMP有什么用函数show实际上是存放在数据库中吗?

SELECT column_name,
dump(column_name,1016)
FROM your_table
WHERE <<predicate that returns just the sample data you posted>>

您使用什么应用程序查看数据?什么是客户的 NLS_LANG设置?

什么是数据库和国家字符集?数据是否存储在 VARCHAR2柱子?或 NVARCHAR2 ?
SELECT parameter, value
FROM v$nls_parameters
WHERE parameter LIKE '%CHARACTERSET';

如果所有问题字符都以 0x19(十进制 25)的形式存储在数据库中,则您的 REPLACE需要像
UPDATE table_name
SET column1 = REPLACE(column1, chr(25), q'[']'),
column2 = REPLACE(column2, chr(25), q'[']'),
...
columnN = REPLACE(columnN, chr(25), q'[']')
WHERE INSTR(column1,chr(25)) > 0
OR INSTR(column2,chr(25)) > 0
...
OR INSTR(columnN,chr(25)) > 0

关于sql - 如何在 SQL 中替换字符串中的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9621778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com