我不是很喜欢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
开头答案 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%'