替换oracle数据库值范围内的字符

时间:2019-11-18 13:49:05

标签: sql oracle oracle11g

我在oracle中有一个数据库,我用从“ A14602727”到“ A14603000”的数字填充了“ Number”字段,但结果是我不小心键入了符号A(用乌克兰语)而不是A(用乌克兰语)英语)。现在,当我找到命令时:

select number from test where number 'А14602727'

...什么都没找到。是否可以在命令的帮助下将所有数字从“ A14602727” (乌克兰)替换为“ A14602727” (英语)? 感谢您的帮助!)

3 个答案:

答案 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个参数:

  1. 您将在其中搜索要替换的字符串(数字列)的字符串
  2. 您要搜索的字符串要替换(乌克兰A)
  3. 您将用(英语A)替换它的字符串

这里有一个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

在更新语句中相应地使用它。

干杯!

相关问题