如果字符串为空或有空格、制表符,则设置为NULL



我是一个初学者,如果我的字段(first_name,last_name,country(有一个"退格";或";选项卡";SQL中的字符序列。有线索吗?

您可以使用正则表达式:

select
case when first_name !~ '^s*$' then first_name end as first_name,
case when last_name  !~ '^s*$' then last_name  end as last_name,
case when country    !~ '^s*$' then country    end as country 
from mytable

Regex^s*$在由0到N个空格字符组成的字符串上匹配。s通常代表空格、制表符和不同类型的换行符(回车、换行…(

如果它们有一个"退格";或";选项卡";字符序列

Postgres特别支持使用转义字符串和特定转义序列的特殊字符。

如果你特别想在退格和制表符上匹配,那么最简单的方法是正则表达式:

str ~ E'[bt]'

SQL是:

select (case when first_name !~ E'[bt]' then first_name end) as first_name,
(case when last_name !~ E'[bt]' then last_name end) as last_name,
(case when country !~ E'[bt]' then country end) as country 
from t;

您可以使用likeand:来表达这一点

select (case when first_name not like E'%b%' and first_name not like E'%t%' then first_name end) as first_name,
(case when last_name not like E'%b%' and last_name  not like E'%t%' then last_name end) as last_name,
(case when country not like E'%b%' and country  not like E'%t%' then country end) as country 
from t

但是正则表达式确实更简单。

相关内容

  • 没有找到相关文章

最新更新