首页 > 解决方案 > 一个 SQL 查询,它使用 Between 运算符中两列的值并将这两列添加为结果的类

问题描述

在一个表中,我有一列包含一个字母,另一列包含一个按字母顺序排列的字母。例如,前者的“A”和后者的“R”。我想在 Between 运算符中使用这两列来搜索另一个表中的单词,该表从第一列的字母开始,以第二列的字母结尾。因此,在我的示例中,“空气”将符合此要求。问题是我还需要将这两列添加到结果中,因此对于我的示例,查询将返回另一个表中的“Air”和“A”和“R”作为我的结果中的两列。抱歉,我不能说得更清楚,因为数据很敏感。

标签: sql

解决方案


根据您在此处描述的内容,是获取输出的一种方法。

create table t(id int, start_letter varchar(1), end_letter varchar(1));
create table search_data(words varchar(50))
insert into t values(1,'A','R')

begin
insert into search_data values('Air');
insert into search_data values('Amour');
insert into search_data values('Arogant');
end;

select *
  from search_data a
  join t b
    on lower(substring(a.words,1,1))=lower(b.start_letter)
   and lower(substring(reverse(a.words),1,1))=lower(b.end_letter)


+-------+----+--------------+------------+
| words | id | start_letter | end_letter |
+-------+----+--------------+------------+
| Air   |  1 | A            | R          |
| Amour |  1 | A            | R          |
+-------+----+--------------+------------+

db fiddle link
https://dbfiddle.uk/?rdbms=sqlserver_2019&fiddle=82cf80f4b76cb740ae56db8f236bfd46

推荐阅读