Sql 在不更改通配符的情况下设置字符串的中间部分
我需要用其他东西更新整个列的字符串的一部分。例如,Sql 在不更改通配符的情况下设置字符串的中间部分,sql,oracle,Sql,Oracle,我需要用其他东西更新整个列的字符串的一部分。例如,1234567890和123XXXXX90的1234567890除外,123和90在整个列中不是常数。这是针对Oracle SQL的。对于SQL server: update yourtable set col = concat(left(col, 3), replicate('X', len(col) - 5), right(col,2)) 对于mysql: update yourtable set col = concat(left(c
1234567890
和123XXXXX90
的1234567890
除外,123和90在整个列中不是常数。这是针对Oracle SQL的。对于SQL server
:
update yourtable
set col = concat(left(col, 3), replicate('X', len(col) - 5), right(col,2))
对于mysql
:
update yourtable
set col = concat(left(col, 3), repeat('X', length(col) - 5), right(col,2))
这是针对SQL Server的
select stuff('1234567890', 4, 5, 'XXXXX')
mysql还是sql server?你是想替换第4到第8个字符,还是想替换除前3个字符和最后2个字符以外的所有字符?嗨,奈尔先生,这是为Oracle SQLokay写的……最初的标签让我很困惑。很好,你已经更改了这些标签。重复Ashwin的问题:这总是在第4和第8个字符之间吗?或者它总是同一个子字符串?还是你总是需要保留前三个和后两个字符?