我想在执行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语句。
我该怎么做?
答案 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) ...;