【发布时间】:2010-11-11 13:05:03
【问题描述】:
这是来自 Oracle SQL 查询。它在数据库中应该有撇号的地方有这些奇怪的细长矩形。 (我希望我们可以在这里粘贴屏幕截图)
当我复制并粘贴结果时,它看起来像这样。
spouse�s
有没有办法编写一个 SQL SELECT 语句,在字段中搜索该字符并在结果中用撇号替换它?
编辑:出于报告目的,我只需要更改 SELECT 语句中的结果,我无法更改数据库。
我跑了这个
select dump('�') from dual;
返回的
Typ=96 Len=3: 239,191,189
到目前为止,这似乎有效
select translate('What is your partner's first name?', '�', '''') 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
编辑: 所以我已经确定这是反引号字符。我无法更新数据库,所以我正在尝试这段代码
从 TN 中选择 REGEX_REPLACE(FN,"\0092","\0027")
我得到 ORA-00904:"Regex_Replace":invalid identifier
【问题讨论】:
-
我会为您的问题添加更多信息。 1) 通过阅读下面的 cmets,您似乎无法通过查询工具在数据库上运行 UPDATE 语句。如果您不能这样做,那么您实际上无法按书面形式解决您的问题。您可以从您的应用程序中访问数据库/创建 SQL 语句吗?
-
您是否在您的应用中看到了这个角色?您是否在查询工具中看到了这一点?
-
我在 SQL Navigator、SQL Developer 和 ASP.net 中看到了这一点
-
CP-1252(默认 Windows 代码页)中的 0x92 是一个反引号字符,看起来有点像撇号。此代码不是有效的 ASCII 字符,在 IS0-8859-1 中也无效。因此,可能数据库是 CP-1252 编码(不太可能),或者是通过 CP-1252 插入的数据库连接,或者撇号以某种方式转换为 0x92。数据库返回在 CP-1252 中有效的值(或其他 0x92 有效的字符集),但您的 db 客户端连接不期望 CP-1252。因此,奇怪的问号。
-
人们使用反引号是因为撇号会破坏应用程序
标签: sql oracle replace character-encoding character