pgsql 通过 case when 时间字段 like ’%2023%‘ 这种写法去匹配会报错,有什么办法不改动时间字段,避免报错
时间: 2024-02-06 11:09:29 浏览: 20
可以使用to_char函数将时间字段转换成字符串类型,然后再进行匹配,示例如下:
```
SELECT *
FROM your_table
WHERE to_char(your_timestamp_column, 'YYYY-MM-DD HH24:MI:SS') LIKE '%2023%';
```
这里将时间戳转换成以年月日时分秒为格式的字符串,然后再进行匹配,可以避免因为时间格式不匹配而报错。
相关问题
pgsql用case when判断字段col中的数据是否存在连续相同符号,除了空格
可以使用CASE WHEN语句和正则表达式来判断字段col中的数据是否存在除空格外的连续相同符号。具体实现方法如下:
```sql
SELECT CASE WHEN col ~ '([^[:space:]])\1+' THEN '存在' ELSE '不存在' END
FROM table_name;
```
其中,[^[:space:]]表示除空格外的任意非空白字符,\1表示匹配前面的第一个括号内的内容,+表示匹配前面的字符一个或多个。
如果返回结果为“存在”,则表示存在除空格外的连续相同符号;如果返回结果为“不存在”,则表示不存在除空格外的连续相同符号。
pgsql用case when判断字段col中的数据是否存在连续相同的标点符号
你可以使用正则表达式来判断字段col中是否存在连续相同的标点符号,如下所示:
```sql
SELECT
CASE
WHEN col ~ '(\p{P})\1+' THEN '存在连续相同的标点符号'
ELSE '不存在连续相同的标点符号'
END AS result
FROM table_name;
```
其中,`\p{P}`表示任何标点符号,`\1+`表示一个或多个与第一个括号匹配的字符。如果字段col中存在连续相同的标点符号,则返回“存在连续相同的标点符号”,否则返回“不存在连续相同的标点符号”。