Fas*_*com 2 sql oracle replace character character-encoding
这是来自Oracle SQL查询.它在数据库中有撇号应该是这些奇怪的瘦矩形形状.(我希望我们可以在这里粘贴屏幕截图)
当我复制并粘贴结果时,它看起来像这样.
spouse?s
Run Code Online (Sandbox Code Playgroud)
有没有办法编写一个SQL SELECT语句,在字段中搜索这个字符,并用结果中的撇号替换它?
编辑:我需要仅在SELECT语句中更改结果以进行报告,我无法更改数据库.
我跑了这个
从双重中选择转储(' ');
哪个回来了
到目前为止,这似乎有效
从双重选择翻译('你的配偶的名字是什么?',' ','''');
但这不起作用
从TableName中选择翻译(Fieldname,' ','''')
从TN中选择FN
你的配偶名字是什么?
来自TN的SELECT DUMP(FN,1016)
典型值= 1长度= 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
编辑:所以我已经确定这是反引号字符.我无法更新数据库,所以我正在尝试这个代码
FROM REGEX_REPLACE(FN,"\ 0092","\ 0027")来自TN
我得到ORA-00904:"Regex_Replace":无效的标识符
这似乎是你的charset configuracion问题.检查您的NLS_LANG和其他NLS_xxx环境/注册表值.您必须检查oracle服务器,您的客户端和该数据的插入器的客户端.
尝试DUMP值.你可以选择这样简单:
SELECT DUMP(the_column)
FROM xxx
WHERE xxx
Run Code Online (Sandbox Code Playgroud)
更新:我认为在尝试替换之前,请查找问题的根源.如果发生这种情况是因为charset麻烦你可能会遇到坏数据的大问题.
更新2:回答评论.问题可能是不在数据库服务器端,可能是在客户端.问题(如果这是问题)可以是服务器上/从客户端通信的转换.这是服务器 - 客户端糟糕的配置协调.例如,如果服务器已定义UTF8字符集,而您的客户端使用US7ASCII,则所有锐化都将显示为?.
另一种方法可能是,如果服务器已定义UTF8字符集,而您的客户端也是UTF8,但应用程序无法显示UTF8字符,则问题出在应用程序端.
更新3:关于你的例子:
select translate('What.它起作用,因为 是完全相同的字符:你已经粘贴在两边.select translate(Fieldname.它不起作用,因为 不存储在数据库中,它是客户端收到的char可能是因为某些转换发生在数据表中,直到它显示给您.下一步:查看DUMP语法并尝试提取神秘字符的代码(从表中不粘贴 !).