gpt4 book ai didi

mysql 删除出现数字后的所有内容(包括数字)

转载 作者:行者123 更新时间:2023-11-29 12:43:22 26 4
gpt4 key购买 nike

我在 MYSQL 中有一个查询,它删除了以下字符“.”之后的任何内容。 '/' 和 '-' 具有以下代码:

CASE

WHEN LOCATE('.', wca.scexh.LocaLcode)>0 THEN SUBSTRING_INDEX(wca.scexh.LocaLcode, '.', 1)
WHEN LOCATE('/', wca.scexh.LocaLcode)>0 THEN SUBSTRING_INDEX(wca.scexh.LocaLcode, '/', 1)
WHEN LOCATE('-', wca.scexh.LocaLcode)>0 THEN SUBSTRING_INDEX(wca.scexh.LocaLcode, '-', 1)

ELSE wca.scexh.LocaLcode

END as LocaLcodeNew,

但是我还想添加一个额外的 case 语句,一旦出现数字,它就会删除任何内容,我尝试了以下 case 语句,但似乎不起作用:

CASE

WHEN LOCATE('.', wca.scexh.LocaLcode)>0 THEN SUBSTRING_INDEX(wca.scexh.LocaLcode, '.', 1)
WHEN LOCATE('/', wca.scexh.LocaLcode)>0 THEN SUBSTRING_INDEX(wca.scexh.LocaLcode, '/', 1)
WHEN LOCATE('-', wca.scexh.LocaLcode)>0 THEN SUBSTRING_INDEX(wca.scexh.LocaLcode, '-', 1)
WHEN LOCATE('0', wca.scexh.LocaLcode)>0 THEN SUBSTRING_INDEX(wca.scexh.LocaLcode, '0', 1)
WHEN LOCATE('1', wca.scexh.LocaLcode)>0 THEN SUBSTRING_INDEX(wca.scexh.LocaLcode, '1', 1)
WHEN LOCATE('2', wca.scexh.LocaLcode)>0 THEN SUBSTRING_INDEX(wca.scexh.LocaLcode, '2', 1)
WHEN LOCATE('3', wca.scexh.LocaLcode)>0 THEN SUBSTRING_INDEX(wca.scexh.LocaLcode, '3', 1)
WHEN LOCATE('4', wca.scexh.LocaLcode)>0 THEN SUBSTRING_INDEX(wca.scexh.LocaLcode, '4', 1)
WHEN LOCATE('5', wca.scexh.LocaLcode)>0 THEN SUBSTRING_INDEX(wca.scexh.LocaLcode, '5', 1)
WHEN LOCATE('6', wca.scexh.LocaLcode)>0 THEN SUBSTRING_INDEX(wca.scexh.LocaLcode, '6', 1)
WHEN LOCATE('7', wca.scexh.LocaLcode)>0 THEN SUBSTRING_INDEX(wca.scexh.LocaLcode, '7', 1)
WHEN LOCATE('8', wca.scexh.LocaLcode)>0 THEN SUBSTRING_INDEX(wca.scexh.LocaLcode, '8', 1)
WHEN LOCATE('9', wca.scexh.LocaLcode)>0 THEN SUBSTRING_INDEX(wca.scexh.LocaLcode, '9', 1)

ELSE wca.scexh.LocaLcode

END as LocaLcodeNew,

我非常感谢对此的任何帮助,提前致谢!

以下示例当​​前与我的 case 语句一样工作,因为我不再看到/。或 - 在任何代码中:

DOW.11 显示为 DOW
DOW/11 显示为 DOW
DOW-11 显示为 DOW

但还需要满足以下示例:

DOW0123 显示为 DOW
DOW2345 显示为 DOW
DOW3456 显示为 DOW

等等

请记住,每个代码的随机字母/数字并不总是相同数量的字符。

最佳答案

CASE 按顺序执行 WHEN 测试,一旦其中一个匹配就停止。因此,如果您的专栏中较早的部分有较晚的匹配项,您将不会删除整个内容。您需要嵌套函数,而不是按顺序进行测试。将 CASE 表达式替换为:

       SUBSTRING_INDEX(
SUBSTRING_INDEX(
SUBSTRING_INDEX(
SUBSTRING_INDEX(
SUBSTRING_INDEX(
SUBSTRING_INDEX(
SUBSTRING_INDEX(
SUBSTRING_INDEX(
SUBSTRING_INDEX(
SUBSTRING_INDEX(
SUBSTRING_INDEX(
SUBSTRING_INDEX(
SUBSTRING_INDEX(evs.sxech.Localcode, '.', 1),
'/', 1),
'-', 1),
'0', 1),
'1', 1),
'2', 1),
'3', 1),
'4', 1),
'5', 1),
'6', 1),
'7', 1),
'8', 1),
'0', 1) AS LocalLcodeNew

您不需要 LOCATE() 测试;如果分隔符不在字符串中,SUBSTRING_INDEX() 将返回未更改的字符串。

DEMO

关于mysql 删除出现数字后的所有内容(包括数字),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25798444/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com