我在oracle中有一个数据库,我用从“ A14602727”到“ A14603000”的数字填充了“ Number”字段,但结果是我不小心键入了符号A(用乌克兰语)而不是A(用乌克兰语)英语)。现在,当我找到命令时:
select number from test where number 'А14602727'
...什么都没找到。是否可以在命令的帮助下将所有数字从“ A14602727” (乌克兰)替换为“ A14602727” (英语)? 感谢您的帮助!)
答案 0 :(得分:1)
您可以使用regexp_replace()
:
update test set number = regexp_replace(number, '^Ä', 'A');
正则表达式'^Ä'
在字符串的开头代表字符'Ä'
。我用'Ä'
来表示乌克兰语中的A:用您要替换的正确字符替换它。
这也可以使用substr之类的方法(可能更有效)完成:
update test set number = 'A' || substr(number, 2) where number like 'Ä%';
答案 1 :(得分:1)
使用简单的Oracle REPLACE函数:
UPDATE test
SET number = REPLACE(number, 'A', 'A');
替换使用3个参数:
这里有一个DEMO示例。
还请注意,您的问题中的查询:
select number from test where number 'А14602727';
无效。应该是这样的:
select number from test where number like 'А14602727';
或类似这样:
select number from test where number = 'А14602727';
所以先检查一下! 干杯!
答案 2 :(得分:1)
您可以使用以下技巧通过重音符号二进制排序将任何字符转换为其基本字符。
select your_col,
utl_raw.cast_to_varchar2(nlssort(your_col, 'nls_sort=binary_ai')) converted_col
from your_table
在更新语句中相应地使用它。
干杯!