SQL:剪切一个字段,然后搜索

时间:2016-01-04 09:38:38

标签: sql sqlite

我想在执行SELECT语句之前对sqlite数据库的字段进行“动态”修改。

该字段称为“topic_simple”,它包含一些文本。在文本的某处,我提供了一种分隔符:4个空格:" "

这是我典型的SELECT语句之一:

SELECT * FROM papers WHERE (topic_simple LIKE '% 3D print%')

我想要那样的东西:

SELECT * FROM papers WHERE ((topic_simple_before_4_spaces) LIKE '% 3D print%')

我不想修改数据库中的topic_simple,我只想在这个字段的子字符串上创建一个select语句。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

LIKE非常强大。为什么不直接在LIKE表达式中添加四个空格:

SELECT *
FROM   papers
WHERE  topic_simple LIKE '% 3D print%    %';

请注意分隔符后面的文本不应包含分隔符,因为这样您可能会得到不需要的行。如果您的SQLite支持它,您也可以使用正则表达式。

MYSQL 中,您可以直接在WHERE子句中的四个空格之前“选择”(或“提取”)文本:

SELECT *
FROM   papers
WHERE  SUBSTRING(topic_simple, 1, LOCATE('    ', topic_simple) - 1) ...;