我有一个包含电视指南数据的数据库,有时在我的描述字段(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
这仅以一种方式起作用-这给了我'|'之前的字符串但是如果没有'|'它会显示一个空列。
答案 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)