繁体   English   中英

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

[英]MysQL Update if a count condition is met

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

基本上,如果我连续有一个名字:
姓(额外信息)
我需要删除“ (额外信息) ”并仅保留姓名
但是,如果没有其他()个

如果有一行,则姓氏(数据)(额外信息)

脚本不应修改此名称

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

非常感谢

您可以尝试找到第一个'('和它的子字符串吗?

别忘了用例全无(字符串中

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

这是我的问题的一个实现。 我使用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

PS我使用ID允许我修改值

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM