首页 > 解决方案 > 检查字符串是否存在子字符串

问题描述

如何检查某个子字符串(例如18UT)是否是列中字符串的一部分?

Redshifts 的SUBSTRING函数允许我根据起始索引 + 子字符串的长度“剪切”某个子字符串,但不检查列的值中是否存在特定的子字符串。

例子:

+------------------+
| col              |
+------------------+
| 14TH, 14KL, 18AB |
| 14LK, 18UT, 15AK |
| 14AB, 08ZT, 18ZH |
| 14GD, 52HG, 18UT |
+------------------+

期望的结果:

+------------------+------+
| col              | 18UT | 
+------------------+------+
| 14TH, 14KL, 18AB | No   |
| 14LK, 18UT, 15AK | Yes  |
| 14AB, 08ZT, 18ZH | No   |
| 14GD, 52HG, 18UT | Yes  |
+------------------+------+

标签: sqlstringamazon-web-servicesamazon-redshiftsql-like

解决方案


这是一种选择:

select col,
    case when ', ' || col || ', ' like '%, 18UT, %' then 'yes' else 'no' end has_18ut
from mytable

虽然这将解决您的直接问题,但应该注意在数据库表中存储分隔列表是不好的做法,应该避免。每个值都应该放在单独的行中。


推荐阅读