所以我有一组条目Table1
Field1
------
aaa111
aaa222
bbb333
我还有另一张桌子 -Prefixes
:
Prefix
------
aaa
bbb
ccc
我希望输出看起来像这样:
Output
------
111
222
333
另外,如果Table1
中的任何Field1
以Prefixes
中的某些内容开头,请修剪该部分。我可以创建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 必须执行嵌套循环联接,循环遍历所有前缀。 这也假设前缀是一个"不相交"集,从某种意义上说,最多可以匹配一个前缀。
如果多个前缀可以匹配,则需要解释如何选择合适的前缀。