像整数运算符一样

Rag*_*ull 11 sql sql-like

我的表中有一个bigint(ProductSerial)类型的列.我需要使用like运算符通过Product serial过滤表.但我发现,像运算符一样不能用于整数类型.

有没有其他方法(我不想使用=运算符).

das*_*ght 13

如果必须使用LIKE,可以将数字转换为char/ varchar,并对LIKE结果执行.这是非常低效的,但是因为LIKE无论如何都有很高的杀死索引的可能性,它可能适用于您的场景:

... AND CAST(phone AS VARCHAR(9)) LIKE '%0203'
Run Code Online (Sandbox Code Playgroud)

如果您希望使用LIKE匹配数字的开头或结尾,可以使用整数除法和模数运算符来提取数字.例如,如果您想要所有九位数字开头407,请搜索

phone / 1000000 = 407
Run Code Online (Sandbox Code Playgroud)

  • @MitchWheat很多时候人们无法控制他们的架构.不应该假设他们可以在不咨询他们的DBA,架构师等的情况下改变他们桌子的结构. (5认同)
  • @MitchWheat您认为编写查询的人可以完全重新考虑数据库的因素吗?我整天都在使用SQL查询,如果我更改了任何数据类型,那么几个应用程序将是FUBAR,我将被解雇. (3认同)
  • @bendataclear如果供应商使用数字来存储电话号码,我会重新评估我对供应商的选择; 它表明忽视了最佳实践,如果他们无法做出简单正确的事情,谁知道他们还有什么问题. (3认同)
  • “我整天都在处理 SQL 查询”——哇,我印象深刻。我说的是解决真正的问题,而不仅仅是增加技术债务。 (2认同)
  • @AdrianWragg我们现在不处理电话号码。 (2认同)