我有这样的表:
Users(id,name)
我需要查询以'asdf_'查找名称的开头,并通过删除此前缀来更新所有行。
例如:
在查询之前,该表包含:
asdf_john
asdf_jane
我想要查询之后:
john
jane
感谢您的帮助
答案 0 :(得分:6)
您可以使用的sql函数是子字符串:SUBSTR(例如:http://www.1keydata.com/sql/sql-substring.html)
对于你的桌子USERS:
UPDATE USERS SET NAME = SUBSTRING (NAME, 6) WHERE NAME LIKE 'asdf_%';
答案 1 :(得分:1)
Update Users
set name = trim(leading 'asdf_' from name)
where name like 'asdf_%'
答案 2 :(得分:0)
UPDATE `Users` SET `name` = replace(`name`, 'asdf_', '') WHERE `name` LIKE 'asdf\_%' ESCAPE '\';
根据@ UltraCommit的答案添加了WHERE
子句,因此当它在开头找到字符串时会替换它。
或者基于@ McPepper的回答:
UPDATE `Users` SET `name` = SUBSTRING(`name`, 6) WHERE `name` LIKE 'asdf\_%' ESCAPE '\';
如果只想在字符串开头时替换。将数字6
替换为要替换的字符串+ 1
的字符数。
在这种情况下,您的字符串asdf_
长5
个字符,+1
变为6
。这是DB将开始保持字符串的字符位置。
答案 3 :(得分:0)
这应该只能从以“asdf _”开头的所有名称中删除起始“asdf_”
UPDATE `Users`
SET `name` = SUBSTRING(`name`, 6)
WHERE `name` REGEXP '^asdf_';