SQL选择是否出现子字符串,然后复制直到子字符串,否则保持原始

时间:2018-10-10 13:36:36

标签: mysql sql string substring

我有一个包含电视指南数据的数据库,有时在我的描述字段(VARCHAR)中有一个'|'评级背后的位置。在将所有内容都转换为XML之前,我曾经在php中进行过检查,但是我想在SQL中进行此操作。

所以,如果我有这个字符串:

This is the description | rating pg-13

然后我要保留

This is the description

但是,如果没有“ |”我想要整个字符串。 我尝试使用子字符串,但无法使其正常工作。

我现在的查询是:

SELECT *, SUBSTRING(`long_description`, 1, POSITION('|' IN `long_description`)) FROM `programs` WHERE station_id = 1

这仅以一种方式起作用-这给了我'|'之前的字符串但是如果没有'|'它会显示一个空列。

2 个答案:

答案 0 :(得分:0)

如何?

Get-Help about_Operators

SELECT *, IF(long_description LIKE '%|%', SUBSTRING(`long_description`, 1, POSITION('|' IN `long_description`)), long_description) FROM `programs` WHERE station_id = 1 子句基本上只是检查您的字段中是否有IF并在情况为真时应用例程。否则,它将仅返回完整的|值。

答案 1 :(得分:0)

基于反引号的使用,您可能正在使用MySQL。如果是这样,substring_index()完全可以满足您的要求:

select substring_index(long_description, '|', 1)