SQL 服务器:select 列有 3 个匹配字符
SQL Server : select column with 3 matching characters
我正在从 2 table 中选择记录,其中名为 DESC
的第一个 table 列(前 3 个字符)应与第二个 table.
我想从 Table 1 列 DESC
中获取最后 2 个字符以添加到我的输出中,但最后 2 个字符不存在于 Table 2 列项目中.
select SUBSTRING(a.[DESC], 1, 3)
from Table1 a
join Table2 b on SUBSTRING(a.[DESC], 1, 3) = b.project
输入:第一个 Table DESC 列:值:'2AB F YY'
第二个 Table 项目列:值:'2AB'
预期输出:Return 所有值为 2AB 的记录
列结果:
'2AB YY'
错误输出:所有值开始于 2AB 以外的记录
一个选项如下
with data
as (
select SUBSTRING(a.[DESC],1,3) as first_3_characters,
,REVERSE(SUBSTRING(REVERSE(a.[DESC]),1,2)) as last_2_char_tab1
,REVERSE(SUBSTRING(REVERSE(b.project),1,2)) as last_2_char_tab2 characters_tab2
from Table1 a
join Table2 b
on SUBSTRING(a.[DESC],1,3) = b.project
)
select *,CONCAT(first_3_characters,last_2_characters)
from data
where last_2_char_tab1 <> last_2_char_tab2
由于您似乎不需要 Table2 中的数据,因此可以使用 EXISTS
。
而RIGHT
可用于获取字符串的最后N个字符。
SELECT
CONCAT(LEFT([DESC], 3),' ', RIGHT([DESC], 2))
FROM Table1 t1
WHERE EXISTS
(
SELECT 1
FROM Table2 t2
WHERE t2.project = LEFT(t1.[DESC], 3)
)
ORDER BY 1;
我正在从 2 table 中选择记录,其中名为 DESC
的第一个 table 列(前 3 个字符)应与第二个 table.
我想从 Table 1 列 DESC
中获取最后 2 个字符以添加到我的输出中,但最后 2 个字符不存在于 Table 2 列项目中.
select SUBSTRING(a.[DESC], 1, 3)
from Table1 a
join Table2 b on SUBSTRING(a.[DESC], 1, 3) = b.project
输入:第一个 Table DESC 列:值:'2AB F YY'
第二个 Table 项目列:值:'2AB'
预期输出:Return 所有值为 2AB 的记录
列结果:
'2AB YY'
错误输出:所有值开始于 2AB 以外的记录
一个选项如下
with data
as (
select SUBSTRING(a.[DESC],1,3) as first_3_characters,
,REVERSE(SUBSTRING(REVERSE(a.[DESC]),1,2)) as last_2_char_tab1
,REVERSE(SUBSTRING(REVERSE(b.project),1,2)) as last_2_char_tab2 characters_tab2
from Table1 a
join Table2 b
on SUBSTRING(a.[DESC],1,3) = b.project
)
select *,CONCAT(first_3_characters,last_2_characters)
from data
where last_2_char_tab1 <> last_2_char_tab2
由于您似乎不需要 Table2 中的数据,因此可以使用 EXISTS
。
而RIGHT
可用于获取字符串的最后N个字符。
SELECT
CONCAT(LEFT([DESC], 3),' ', RIGHT([DESC], 2))
FROM Table1 t1
WHERE EXISTS
(
SELECT 1
FROM Table2 t2
WHERE t2.project = LEFT(t1.[DESC], 3)
)
ORDER BY 1;