我有一个包含电视指南数据的数据库,在我的描述字段 (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
这只有一种方式 - 这给了我“|”之前的字符串但如果没有“|”它给出一个空列。
最佳答案
根据反引号的使用,您可能正在使用 MySQL。如果是这样,substring_index()
正是您想要的:
select substring_index(long_description, '|', 1)
关于mysql - SQL 如果子字符串出现则选择然后复制直到子字符串否则保持原始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52741510/