如何选择具有以特定数字开头的bigint字段的所有记录?

时间:2016-07-21 13:04:09

标签: sql sql-server database sql-server-2008 rdbms

我不是很喜欢SQL而且我有以下问题。

我已经编写了这个简单的JOIN查询:

select a.nome, a.cognome from Banker b
INNER JOIN Anagrafica a
ON b.AnagraficaID = a.ID
INNER JOIN Polizza p
ON p.BankerID = b.ID
WHERE p.ID LIKE "7%"

我的问题出在上一个 WHRE 子句中。我希望where条件是所有返回的记录必须以数字 7 开头,但我收到此错误消息:

 14:59:07  [SELECT - 0 row(s), 0.000 secs]  [Error Code: 207, SQL State: S0001]  Invalid column name '7%'.
... 1 statement(s) executed, 0 row(s) affected, exec/fetch time: 0.000/0.000 sec  [0 successful, 0 warnings, 1 errors]

我认为这可能取决于 Polizza 表的 ID 字段是 bigint 而不是 varchar

那么如何在这种类型的领域实现这个呢?我需要它只返回具有 Polizza 表的 ID 字段的记录,该字段以 7

开头

3 个答案:

答案 0 :(得分:2)

尝试转换ID并从“7%”中删除双引号

WHERE CAST(p.ID AS VARCHAR(30)) LIKE '7%'

答案 1 :(得分:0)

使用CAST

select a.nome, a.cognome from Banker b
INNER JOIN Anagrafica a
 ON b.AnagraficaID = a.ID
INNER JOIN Polizza p
  ON p.BankerID = b.ID
WHERE CAST(p.ID AS VARCHAR(50))LIKE '7%'

答案 2 :(得分:0)

SQL Server使用单引号来包装字符串

select a.nome, a.cognome from Banker b
INNER JOIN Anagrafica a
ON b.AnagraficaID = a.ID
INNER JOIN Polizza p
ON p.BankerID = b.ID
WHERE p.ID LIKE '7%'