sql-server - 查找带有前缀和后缀的匹配号码
问题描述
我有下表与示例记录。
CREATE TABLE Testtbl
(
Number1 int,
Number2 int,
AddressA varchar(50),
AddressB varchar(50),
originalNumber1 int,
originalNumber2 int
);
记录:
INSERT INTO Testtbl VALUES(12345,9876,'A1','B1',9876,12345),
(4321,761,'A2','B2',924321,761110),
(159,9544,'A3','B3',929544,110159),
(158,98714,'A4','B4',110158,9298714),
(105,9804,'A5','B5',105110,9804110);
我想找到 columnns和Number1
,的匹配。如果匹配,则显示else 值。originalNumber1
Number2
originalNumber2
Number1
originalNumber1
列originalNumber1
和originalNumber2
包含前缀和后缀,如记录中所示92
和110
。
预期输出:
Num1 Num2
-------------
9876 12345
4321 761
929544 1110159
158 98714
105 9804
我的尝试:
SELECT CASE WHEN Number1 LIKE '%'+ CAST(OriginalNumber1 AS VARCHAR(20)) +'%'
THEN Number1 ELSE OriginalNumber1 END AS Num1,
CASE WHEN Number2 LIKE '%'+ CAST(OriginalNumber2 AS VARCHAR(20)) +'%'
THEN Number2 ELSE OriginalNumber2 END AS Num2
FROM Testtbl
解决方案
使用CASE
SELECT CASE WHEN OriginalNumber1 LIKE '%'+ CAST(Number1 AS VARCHAR(20)) +'%'
THEN Number1
ELSE OriginalNumber1 END AS Num1,
CASE WHEN OriginalNumber2 LIKE '%'+ CAST(Number2 AS VARCHAR(20)) +'%'
THEN Number2
ELSE OriginalNumber2 END AS Num2
FROM #Testtbl
推荐阅读
- python - 一种热编码 - 假人 - 在几列中,然后将原始 df 与 pandas 连接
- php - Laravel Queue 使用 CURL 下载文件
- android - 在 Android 中处理 MVVM 架构中的后退按钮
- visual-foxpro - VFP CHR(9) 未按预期输出 TAB
- python - 将帐户身份验证方法从用户名更改为电子邮件
- java - 在 Spring Boot 集成中的 MqttPahoMessageHandler 和 MqttPahoMessageDrivenChannelAdapter 之间共享相同的 MQTT 客户端实例
- php - 如何使用 API 在 Woocommerce 中获取 BACS 帐户详细信息?
- node.js - 从我的 nodejs 访问代理服务器地址?
- api - 如何获取 Aliseeks api 密钥?以及如何登录 Aliseeks?
- docker - 无法访问 vagrant 机器上的 vagrant 文件夹(旧文件句柄)