我試圖在 CASE 陳述句中匹配 2 個表中的列,同時忽略字串中的第三個字符。
樣本資料:
IF OBJECT_ID('tempdb..#t1') IS NOT NULL DROP TABLE #t1
IF OBJECT_ID('tempdb..#t2') IS NOT NULL DROP TABLE #t2
CREATE TABLE #t1
( courseid VARCHAR(10)
)
INSERT INTO #t1(
courseid
)
VALUES
(00.123456)
,(01.234567)
,(02.345678)
CREATE TABLE #t2
(
courseid VARCHAR(10)
)
INSERT INTO #t2(
courseid
)
VALUES
(00.923456)
,(01.834567)
,(02.745678)
以下是進行匹配的可靠方法嗎?
(我不需要第三個 select 陳述句來作業,只是用它作為參考來告訴你我是如何使用我的 case 陳述句的。它在我的實際代碼中作業,只是想知道使用 Right/Left 是否是一種可靠的方式來這樣做,或者如果有更好的方法使用通配符或其他東西。)
SELECT
t1.courseid
,LEFT(t1.courseid,2) right(t1.courseid,5) AS T1_CourseID FROM #t1 AS t1
SELECT
t2.courseid
,LEFT(t2.courseid,2) right(t2.courseid,5) AS T2_CourseID FROM #t2 AS t2
SELECT
CASE WHEN EXISTS (SELECT t1.CourseID
FROM #T1 AS t1
WHERE LEFT(t1.courseid,2) RIGHT(t1.courseid,5)= LEFT(t2.courseid,2) RIGHT(t2.courseid,5)) THEN 1 ELSE 0 END IsMatchedCourse
FROM #t1 AS T1
結果:

uj5u.com熱心網友回復:
您可以根據需要利用STUFF()功能。
請參閱下面的概念示例。
資料庫
DECLARE @courseid VARCHAR(10) = '00.123456';
SELECT @courseid AS [Before]
, STUFF(@courseid, 4, 1, '') AS [After]
輸出
| 前 | 后 |
|---|---|
| 00.123456 | 00.23456 |
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/537286.html
