在我的数据库中,我应该只使用波兰语字母表编写数据,但有时波兰语字母表中不包含符号(从不同编码源复制的单词),这些符号与另一种编码中的波兰语字母相对应。是否有可能以某种方式将波兰语字母表之外的符号转换为相应的字母? 我想到的唯一解决方案是手动查找和替换这些字符,但也许你可以更好地解决我的问题。
问题涉及Oracle SQL语言。
我没有在我面前的数据库但是我记得正确的例子看起来像这样 - 我的数据库有两行:
ŚWIAT
ÚWIAT
我需要的是将不属于波兰字母的Ú转换为Ś。
答案 0 :(得分:0)
你可以试试这个。首先试验它是否有效。
如果我想用字符串中的j更改字母z的每次出现,我会使用translate函数:translate(text_string, 'z', 'j')
。我不必使用字母z和j;相反,我可以写translate(text_string, chr(122), chr(106)
- 找出字符代码,我使用select ascii('z') from dual;
。例如:
SQL> select translate('banzo', chr(122), chr(106)) from dual;
TRANS
-----
banjo
这会将text_string中每次出现的z更改为j。
现在,您必须在字符集中找到要更改的字符的代码(&#34;来自&#34;以及&#34;到&#34;字符) - 它应该是您的会话字符集,而不是数据库字符集。 (至少我认为这是正确的;试验它或阅读CHR的文档,也许对于TRANSLATE - CHR返回DATABASE字符集中的字符代码,除非你另有说明,而我相信TRANSLATE使用会话字符集。)< / p>
函数ascii
可能适用于非ASCII字符,也可能不适用,但如果你谷歌搜索字符集的名称,你应该找到一个字符集表,它会显示所有可用字母的代码在那个字符集中。
然后,如果这样做,你可以一次性完成翻译 - translate(text_string, 'abcd', 'qrst')
将改变每一个&#39; a&#39;每一个&#39;每一个&#39;&#39;到一个&#39; r&#39;使用chr(...)
而不是'abcd'
,您可以写chr(97) || chr(98) || chr(99) || chr(100)
。