gpt4 book ai didi

sql - 替换 SQL 结果中的字符

转载 作者:行者123 更新时间:2023-12-01 12:46:17 24 4
gpt4 key购买 nike

这是来自 Oracle SQL 查询。它在数据库中的撇号应该出现的地方有这些奇怪的细长矩形。 (我希望我们可以在此处粘贴屏幕截图)

当我复制并粘贴结果时,它看起来像这样。

spouse�s

有没有办法编写一个 SQL SELECT 语句,在字段中搜索这个字符,并在结果中用撇号替换它?

编辑:我只需要更改用于报告目的的 SELECT 语句中的结果,我不能更改数据库。


我运行了这个

从 dual 中选择 dump('�');

哪个返回了

Typ=96 Len=3: 239,191,189

到目前为止这似乎有效

select translate('你配偶的名字是什么?', '�', '''') from dual;

但这行不通

select translate(Fieldname, '�', '''') from TableName


从TN中选择FN

您配偶的名字是什么?

从 TN 中选择 DUMP(FN, 1016)

Typ=1 Len=33 CharacterSet=US7ASCII: 57,68,61,74,20,69,73,20,79,6f,75,72,20,73,70,6f,75,73,65 ,92,73,20,66,69,72,73,74,20,6e,61,6d,65,3f


编辑:所以我确定这是反引号字符。我无法更新数据库,所以我正在尝试这段代码

SELECT REGEX_REPLACE(FN,"\0092","\0027") FROM TN

我得到 ORA-00904:"Regex_Replace":invalid identifier

最佳答案

这似乎是您的字符集配置有问题。检查您的 NLS_LANG 和其他 NLS_xxx 环境/注册表值。您必须检查 oracle 服务器、您的客户端和该数据插入器的客户端。

尝试DUMP值(value)。你可以用一个简单的选择来做到这一点:

SELECT DUMP(the_column)
FROM xxx
WHERE xxx

更新:我认为在尝试更换之前,先寻找问题的根源。如果发生这种情况是因为字符集问题,您可能会遇到错误数据的大问题。

更新 2:回复评论。问题可能不在数据库服务器端,可能是在客户端。问题(如果这是问题所在)可能是服务器与客户端通信之间的转换。它用于服务器-客户端错误的配置协调。例如,如果服务器定义了 UTF8 字符集,而您的客户端使用 US7ASCII,那么所有尖音符都将显示为 ?。

另一种方法是,如果服务器定义了 UTF8 字符集,而您的客户端也定义了 UTF8,但应用程序无法显示 UTF8 字符集,那么问题出在应用程序端。

更新 3:关于您的示例:

  • select translate('What。之所以有效,是因为 � 是完全相同的字符:您已在两侧粘贴。
  • select translate(Fieldname。它不起作用,因为 � 没有存储在数据库中,它是客户端收到的字符,可能是因为在显示给您之前,数据表中发生了一些转换.

下一步:查看 DUMP语法并尝试提取神秘字符的代码(从不粘贴 �! 的表中)。

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

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