如果满足计数条件,则进行MysQL更新

时间:2017-10-05 01:21:20

标签: mysql sql-update substring

我有一个由5000行组成的表。如果只找到一对(),我需要通过删除“(...)”中的所有值来更新每一行的SQL命令。

基本上,如果我有一个名字连续:
姓氏姓名(额外信息)
我需要删除“(额外信息)”,只留下姓氏 但如果没有额外的一对()

如果有一行 姓名姓(数据)(额外信息)

脚本不应修改此名称

简单来说,我需要更新一个只有一个(或)符号的名称

非常感谢

3 个答案:

答案 0 :(得分:0)

你可以尝试找到第一个'('和子串到它?

不要忘记使用case for none(字符串

update userlogin
set fullname = case position('(' in FullName) 
when 0
then fullname
else substring(Fullname,1,position('(' in FullName) - 1) 
end

答案 1 :(得分:0)

这是我的问题的实现。在将其应用于更新请求之前,我使用select来让我检查结果。该脚本显示了一个表格 3列:Id,Name,UpdatedName,其中Name是我们拥有的,UpdatedName是我们将获得的

  SELECT `Id`,`Name`, 
    (case when ((LENGTH(`Name`)-LENGTH(REPLACE(`Name`, '(', ''))) = 1) 
     THEN
          SUBSTRING_INDEX(`Name`, '(', 1)
     ELSE
          '-'
     END)
     as updated_name,
    FROM table
    WHERE (LENGTH(`Name`)-LENGTH(REPLACE(`Name`, '(', ''))) = 1
    LIMIT 0,1500

P.S。我使用Id允许我修改值

答案 2 :(得分:0)

SELECT CASE
    WHEN fname = 'correct' THEN 'your condition'
    WHEN sname = 'correct' THEN 'your second condition'
    ELSE 'baz'
END AS fullname
FROM `databasetable`

或者你也可以这样做

CASE
    WHEN action = 'update' THEN
        UPDATE sometable SET column = value WHERE condition;
    WHEN action = 'create' THEN
        INSERT INTO sometable (column) VALUES (value);
END CASE