sql - 像列 2 一样在列 1 上内连接两个表,后跟非字母表

标签 sql sql-server inner-join

我有两个表 - name_table:

<表类=“s-表”> <标题> ID 姓名 数据类型 <正文> 1 ssn_1 int 2 ssn_12nam varchar 3 ssn int 4 ssn123 int 5 ssnnam varchar 6 ss123 varchar 7 ss_12 int 8 ssnam varchar

模式表:

<表类=“s-表”> <标题> ID 模式 <正文> 10 ssn 11 SS

我想按照类似条件名称的模式连接两个表,后跟非字母表。

select 
    A.name, B.pattern 
from 
    name_table A 
inner join 
    pattern_table B on A.name like B.pattern +'[^a-zA-Z]%'

这里ssnssn_12nam 匹配- 我只想要名称后跟非字母或名称=模式。模式 ss 不应与 ssn、ssn_123 等匹配。

这是我正在寻找的输出:

<表类=“s-表”> <标题> 姓名 模式 <正文> ssn_1 ssn ssn ssn ssn123 ssn ss123 SS ss_12 SS

最佳答案

您可以尝试按照以下条件加入:

select n.name, p.pattern
from name_table n 
join pattern_table p on Replace(n.name, p.pattern, '') not like '%[A-z]%';

您可能会发现在交叉应用中实现逻辑更容易:

select n.name, p.pattern
from name_table n 
cross apply (
  select pattern
  from pattern_table p
  where Replace(n.name, p.pattern, '') not like '%[A-z]%'
)p;

关于sql - 像列 2 一样在列 1 上内连接两个表,后跟非字母表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76602281/

相关文章:

sql - INNER JOIN ON 与 WHERE 子句

mysql - 内连接获取所有属性

mysql - 我可以在一个词后使用 MySQL 中的星号吗,比如 med*

php - 插入具有多个值的重复键更新

sql - 如何从多边形中删除相同多边形的多个条目?

php - php与sql server集成的问题

mysql - 多个 MySQL 连接的问题

php - PHP 中的 UNION MySQL 结果将取决于第一个选择的列

sql - 使用 T-SQL 根据年月日创建日期

c# - 如何在 C# 中存储 SQL 查询的结果字符串