我如何提取SUNSTRING IF 存在commas
,或者如果没有找到commas
则返回整个字符串?
例如:
640 => 640
310,321,450 => 310
1024,5,78, 900 => 1024
我正在考虑做这样的事情:(假设这个字符串位于一个名为author_ids
的表格行中)
[...]
WHERE SUBSTR(a.author_ids, 0, INSTR(a.author_ids, ',')) = b.author_id
OR a.author_ids = b.author_id
[...]
但这显然不起作用。
感谢。
其他信息:
约有10%的" author_ids"该作者有多个作者,因此a.author_ids = b.author_id
可以正常工作,但如果有多位作者,则会""
或null
。
答案 0 :(得分:4)
以下是两种方法:
select substring_index(val, ',', 1)
或
select val + 0
第一个在第一个逗号之前获取所有内容。第二个将字符串转换为数字。
将忽略包含第一个非数字字符(例如',')之后的所有字符。您似乎将数字列表存储在逗号分隔的字符串中。这是一个坏主意。你应该考虑使用联结表,而不是将数字存储为字符串并列在字符串而不是表
答案 1 :(得分:1)
SELECT CASE
WHEN author_ids LIKE '%,%'
THEN SUBSTRING_INDEX(author_ids, ',', 1)
ELSE author_ids
END AS author_ids
FROM yourtable
SQL FIDDLE:http://sqlfiddle.com/#!9/fca0e/3/0