hsi*_*mah 5 sql t-sql sql-server
我有一个BIGINT列,我想要进行部分匹配.
例如,@search = 1应该返回第一个数字为1(1,11,100等)的所有记录.基本上与varchar LIKE相同.
我试过了:
DECLARE @search VARCHAR
SET @search = '1'
Run Code Online (Sandbox Code Playgroud)
和
SET @search = '1%'
Run Code Online (Sandbox Code Playgroud)
用过:
SELECT
id FROM table
WHERE
CAST(id AS varchar) LIKE @search
Run Code Online (Sandbox Code Playgroud)
添加%到@search于事无补.任何想法如何实现这一目标?
编辑:它似乎是变量.如果我在WHERE条款中对字符串进行硬编码,我会得到我正在寻找的结果.
SELECT id FROM table WHERE CAST(id AS VARCHAR) LIKE '14%'
Run Code Online (Sandbox Code Playgroud)
这给了我所有id14*(14,140,1400等)的记录.
试试这个:
DECLARE @search VARCHAR(10)
SET @search = '1'
SELECT id FROM table WHERE CAST(id AS VARCHAR(10)) LIKE @search + '%'
Run Code Online (Sandbox Code Playgroud)
在转换为时VARCHAR,您应始终指定长度.如果您没有定义长度,SQL-Server将为您分配一个长度.有时会是1其他人30.阅读本文以获取更多信息.