18-35 或空白值 通过SQL把这个值根据-分开,取右边的值,与50比大小,case when 返回1或0,不能使用SUBSTRING_INDEX函数
时间: 2024-04-12 09:30:04 浏览: 56
可以使用正则表达式来实现这个需求,以下是一个示例的 SQL 查询语句:
```sql
SELECT
CASE WHEN REGEXP_REPLACE('18-35', '.*-(\d+)', '$1') <= 50 THEN 1 ELSE 0 END AS comparison_result
FROM
your_table;
```
上述查询中,我们使用了 `REGEXP_REPLACE` 函数来从字符串中提取出右边的数字,并将其与 50 进行比较。如果提取出的数字小于等于 50,则返回 1,否则返回 0。你需要将 `your_table` 替换为你实际使用的表名。
如果输入为空白值,你可以使用以下查询来处理:
```sql
SELECT
CASE WHEN REGEXP_REPLACE(your_column, '.*-(\d+)', '$1') = '' THEN 0
WHEN REGEXP_REPLACE(your_column, '.*-(\d+)', '$1') <= 50 THEN 1
ELSE 0
END AS comparison_result
FROM
your_table;
```
这样可以先判断字符串是否为空白值,如果是空白值,则直接返回 0。如果不是空白值,则进行数字提取和比较的逻辑。同样,你需要将 `your_table` 替换为你实际使用的表名,`your_column` 替换为包含该值的列名。
阅读全文