sql - ORACLE - 如果列仅包含字符串,则为真,否则为假
问题描述
假设我有 2 列,第一列包含字母数字以及混合字符,例如。abc12$$, abc, 123, re12。第二列仅包含数字,但长度不同。
我必须找出第一列是否只包含字母,而第二列是否只包含 9 位数字,那么 True 否则 False
你能帮我吗?
以下是您可以修改的查询
with temp(name) as (select 'abc' from dual
union select '123abc' from dual
union select '1abc3' from dual
union select 'abc3' from dual
union select 'ab3c' from dual)
select * from temp;
解决方案
要检查列是否仅包含字符,您可以使用:
case when regexp_like(aColumn, '^[[:alpha:]]*$') then 'true' else 'false' end
这将空字符串视为字符串;如果您想为空字符串获取 false,您可能需要编辑[[:alpha:]]*
为[[:alpha:]]+
.
这个怎么运作:
^
: 字符串的开头[[:alpha:]]*
零次或多次出现的字母字符$
: 字符串的结尾
要检查第二列是否仅包含 9 位数字,您可能需要
case when regexp_like(aColumn, '^\d{9}$') then 'true' else 'false' end
这里\d{9}
的意思是“一个数字恰好出现 9 次”。
您可以轻松地使用这两个表达式同时进行两项检查,例如
case
when regexp_like(column_1, '^[[:alpha:]]*$') AND
regexp_like(column_2, '^\d{9}$')
then 'true'
else 'false'
end
推荐阅读
- xsd - 从 xsd 创建具有许多导入的类
- mysql - 如何更改我的子选择我可以使用 WHERE IN 获得多行?
- python - 如何检查给定的 s3 存储桶中是否存在给定目录或文件夹,如果存在如何从 s3 中删除该文件夹?
- llvm-clang - 无法使用 emmake (Emscripten SDK) 编译 libpd
- python - 在 ubuntu debian9 上安装以前版本的 pip3
- java - 如何在我的 Spring Boot 项目中使用不是依赖项的类
- pandas - 熊猫分层枢轴获取具有最大值的列
- android - 如何在 android 中显示 PDF 和图像?
- javascript - 不能在承诺内的 setInterval 内使用它
- java - 将 spring boot jar 转换为 war