Rya*_*uez 5 sql sql-server sql-server-2012
我有一个包含数据行的表tbl1:
ID TIN SSS
10001 none 1000-20
10002 69098 PRC
10003 69099 INC
Run Code Online (Sandbox Code Playgroud)
我想查询每个ID的Legal_Doc_No.每个ID的值是TIN或SSS列.
如何查询以字母(无)开头的TIN和SSS列,以便只将以数字开头的值分配给Legal_Doc_No
Select
ID,
'Legal_Doc_No' = case when TIN = Letter then SSS
else TIN end
from tbl1
Run Code Online (Sandbox Code Playgroud)
大多数数据库都支持left()
,所以你可以这样做:
select id,
(case when left(time, 1) between 'a' and 'z' or left(time, 1) between 'A' and 'Z'
then SSS else TIN
end) as Legal_Doc_no
from tbl1;
Run Code Online (Sandbox Code Playgroud)
根据数据库的不同,可能还有其他解决方案.
在SQL Server中,您可以执行以下操作:
select id,
(case when time like '[a-z]%'
then SSS else TIN
end) as Legal_Doc_no
from tbl1;
Run Code Online (Sandbox Code Playgroud)
如果您有一个区分大小写的排序规则,那么您需要考虑到这一点:
select id,
(case when lower(time) like '[a-z]%'
then SSS else TIN
end) as Legal_Doc_no
from tbl1;
Run Code Online (Sandbox Code Playgroud)