我在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,
我非常感谢你提供任何帮助,提前谢谢!
以下示例目前与我所拥有的案例陈述一样,因为我不再看/。或 - 在任何代码中:
DOW.11显示为DOW
DOW / 11显示为DOW
DOW-11显示为DOW
但是还需要提供以下示例:
DOW0123显示为DOW
DOW2345显示为DOW
DOW3456显示为DOW
等
请记住,每个代码的随机字母/数字并不总是相同的字符数。
答案 0 :(得分:1)
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()
将返回字符串不变。