根据另一个表中的字段修剪字段值



所以我有一组条目Table1

Field1 
------
aaa111 
aaa222 
bbb333 

我还有另一张桌子 -Prefixes

Prefix
------
aaa
bbb
ccc

我希望输出看起来像这样:

Output
------
111
222
333

另外,如果Table1中的任何Field1Prefixes中的某些内容开头,请修剪该部分。我可以创建cursor并进行like比较,但我想知道是否有更简单的解决方案?

注意:前缀不一定是 3 个字符,前缀中没有重叠

好吧,您可以使用left join

select coalesce(stuff(t1.field1, 1, len(p.prefix), ''), t1.field1) as new_field1
from table1 t1 left join
prefixes p
on t1.field1 like p.prefix + '%';

这将没有效率。 SQL Server 必须执行嵌套循环联接,循环遍历所有前缀。 这也假设前缀是一个"不相交"集,从某种意义上说,最多可以匹配一个前缀。

如果多个前缀可以匹配,则需要解释如何选择合适的前缀。

最新更新