Sql 如何替换oracle中字符串的前三个字符

Sql 如何替换oracle中字符串的前三个字符,sql,oracle,Sql,Oracle,如何替换oracle中字符串的前三个字符。假设我有100条员工id记录,我需要在100条记录中的30到50条之间替换记录的前三个字符 输入:1112341123511123611237 输出:22223422223522236222237替换和更新 选中此项: SELECT * FROM ns_words; mine mini mani nikhil sugandh mining SELECT regexp_replace(a,

如何替换oracle中字符串的前三个字符。假设我有100条员工id记录,我需要在100条记录中的30到50条之间替换记录的前三个字符

输入:1112341123511123611237 输出:22223422223522236222237替换和更新 选中此项:

    SELECT * FROM ns_words;

    mine
    mini
    mani
    nikhil
    sugandh
    mining

    SELECT regexp_replace(a,'(.{3}(.*)$)','abc\2') FROM NS_WORDS;
    abce
    abci
    abci
    abchil
    abcandh
    abcing
对于您的查询,它类似于:

SELECT regexp_replace(a,'(.{3}(.*)$)','abc\2') FROM NS_WORDS where col2 
between 30 and 50;

假设您希望按照某些条件将第30到50行的前3个字符替换为abc,则:

SELECT CASE
       WHEN ROWNUM BETWEEN 30 AND 50
       THEN 'abc' || SUBSTR( your_column, 4 )
       ELSE your_column
       END AS replaced_value
FROM   (
  SELECT *
  FROM   your_table
  ORDER BY <some_criteria>
)

替换为什么您想要查询或更新语句???请共享一些示例输入和预期输出。请发布一些实际代码!请包括详细信息,如:您的表格结构为文本或代码,而不是图像;你想替换什么;你想用什么来代替它;如何排序数据以查找第30条或第50条记录;是要更新表还是只在查询中执行替换;以及您的预期输出,如text.replace前三个字符之间的记录在30至50之间的100这并没有解决OP的不明确的要求只更新两个边界之间的记录。而且,使用正则表达式是过分的;您只需使用SUBSTR。@MT0为其指定另一列,并在30和50之间进行where运算即可