当前位置: 首页 > 面试题库 >

如何结合IN运算符与LIKE条件(或获得可比结果的最佳方法)

岑畅
2023-03-14
问题内容

我需要选择一个字段以几个不同的前缀之一开头的行:

select * from table 
where field like 'ab%' 
  or field like 'cd%' 
  or field like "ef%" 
  or...

在Oracle或SQL Server中使用SQL的最佳方法是什么?我正在寻找类似以下语句的内容(不正确):

select * from table where field like in ('ab%', 'cd%', 'ef%', ...)

或者

select * from table where field like in (select foo from bar)

编辑:我想看看如何通过在一个SELECT语句中提供所有前缀,或将所有前缀存储在帮助器表中来完成此操作。

前缀长度不固定。


问题答案:

将前缀表与实际表连接将在SQL Server和Oracle中都可以使用。

DECLARE @Table TABLE (field VARCHAR(32))
DECLARE @Prefixes TABLE (prefix VARCHAR(32))

INSERT INTO @Table VALUES ('ABC')
INSERT INTO @Table VALUES ('DEF')
INSERT INTO @Table VALUES ('ABDEF')
INSERT INTO @Table VALUES ('DEFAB')
INSERT INTO @Table VALUES ('EFABD')

INSERT INTO @Prefixes VALUES ('AB%')
INSERT INTO @Prefixes VALUES ('DE%')

SELECT  t.*
FROM    @Table t
        INNER JOIN @Prefixes pf ON t.field LIKE pf.prefix


 类似资料:
  • 本文向大家介绍我们可以结合使用MySQL IN AND LIKE运算符吗?,包括了我们可以结合使用MySQL IN AND LIKE运算符吗?的使用技巧和注意事项,需要的朋友参考一下 是的,我们可以使用LIKE和OR运算符在MySQL中组合IN和LIKE运算符。让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 输出结果 这将产生以下输出- 以下是在

  • 问题内容: 我需要将字符串的结尾与存储过程中可能结尾的列表进行比较。这将被称为很多,大约有10-15个候选结局。在这一点上,仅代码解决方案比创建专用于此的表更为可取。会是这样的: 我正在寻找速度和可维护性方面的最佳方法。我认识的候选人是 正确,到目前为止,我最喜欢的是,但这意味着我必须对字符串长度进行硬编码,因此容易出错。这也意味着多次剪切源字符串。 像,可能较慢,但较干净 CHARINDEX,因

  • 问题内容: 我对条件运算符有些疑惑。考虑以下两行: 为什么f1变为null且第二条语句引发NullPointerException? Langspec-3.0第15.25段说: 否则,第二和第三操作数分别为S1和S2类型。令T1为对S1进行装箱转换所产生的类型,而T2为对S2进行装箱转换所产生的类型。条件表达式的类型是将捕获转换(§5.1.10)应用于lub(T1,T2)(§15.12.2.7)的

  • 我对条件运算符有点困惑。请考虑以下两行: 为什么f1变成null,而第二条语句抛出NullPointerException? LANSPEC-3.0第15.25段SAIS: 否则,第二和第三操作数的类型分别为S1和S2。设T1是对S1应用装箱转换得到的类型,设T2是对S2应用装箱转换得到的类型。条件表达式的类型是将捕获转换(§5.1.10)应用于lub(T1,T2)(§15.12.2.7)的结果。

  • 问题内容: 而不是执行: 在 类似’a%’ 或类似’b%’ 或类似’c%’的地方 从a中选择a,有没有办法执行类似此伪代码的功能? 在 a IN中 从b选择a (’a%’,’b%’,’c%’) __ 问题答案: 可能对于您的示例而言太具体了,但是您可以执行’[ac]%’这样的操作。除此之外,我不知道任何类似LIKE的IN语法

  • 问题内容: 我有ID为的商品。现在我有如下数据。每行都有一个offerId。由数组中的组合组成。是那个的价值 现在,我必须选择所有给我提供最佳ID组合(即最大总折扣)的offerId。 例如,在上述情况下:可能的结果可能是: [o2,o4,o5]最大折扣为。 注意。结果offerId应该不会重复ID。id的示例为[1,3,4],[5],[6]都是不同的。 其他组合可以是: 其id为[1],[3,5