mysql - SQL 如果子字符串出现则选择然后复制直到子字符串否则保持原始

标签 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

这只有一种方式 - 这给了我“|”之前的字符串但如果没有“|”它给出一个空列。

最佳答案

根据反引号的使用,您可能正在使用 MySQL。如果是这样,substring_index() 正是您想要的:

select substring_index(long_description, '|', 1)

关于mysql - SQL 如果子字符串出现则选择然后复制直到子字符串否则保持原始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52741510/

相关文章:

Java - 准备好的语句和数组

javascript - 从类返回字符串 - JavaScript

php - 轻松从以特定方式格式化的字符串中提取数据

string - 获取用户位置并将坐标用作 didUpdateLocations 之外的字符串

mysql - 比较密码和用户名的准确性 : utf8_general_ci or utf8_bin?

Mysql查询每行只获取4条记录

mysql - 类别、子类别和服务的数据库结构

mysql - 交响乐; SQLSTATE[HY000] [2002] 使用 127.0.0.1 作为数据库主机时没有此类文件或目录

mysql - NOT EXISTS 子句

MySQL 查询以获取列 1 的值在列 2 中具有一组值