我有一个带有电子邮件地址的数据库,总共有15个字符。
一些字符长度为14个字符,并且它们具有相同的共同点,但是0
在第3个索引处的名称中缺少a 。
我的ID号有类似的问题,但是很容易解决,因为我必须将0推到第一个索引。
我的预期结果应该更改'[email protected]'
为'[email protected]'
。
要0
在email
s中添加14个字符的第4个字符,您可以简单地使用SUBSTR
:
SELECT CONCAT(SUBSTR(email, 1, 3), '0', SUBSTR(email, 4))
FROM mytable
WHERE LENGTH(email) = 14
另一种解决方案是使用REGEXP_REPLACE
正则表达式,该正则表达式仅在具有14个字符的电子邮件中匹配;这避免了WHERE
子句的需要,因为与模式不匹配的电子邮件将原封不动地返回:
SELECT REGEXP_REPLACE(email, '^(.{3})(.{11})$', CONCAT('$1', '0', '$2'))
FROM t
db <>在这里拨弄:
WITH t AS (SELECT '[email protected]' email UNION SELECT '[email protected]')
SELECT CONCAT(SUBSTR(email, 1, 3), '0', SUBSTR(email, 4))
FROM t
WHERE LENGTH(email) = 14
| CONCAT(SUBSTR(email, 1, 3), '0', SUBSTR(email, 4)) |
| :----------------------------------------------------- |
| [email protected] |
WITH t AS (SELECT '[email protected]' email UNION SELECT '[email protected]')
SELECT REGEXP_REPLACE(email, '^(.{3})(.{11})$', CONCAT('$1', '0', '$2'))
FROM t
| REGEXP_REPLACE(email, '^(.{3})(.{11})$', CONCAT('$1', '0', '$2')) |
| :---------------------------------------------------------------- |
| [email protected] |
| [email protected]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句