表
productName description
+++++++++++++++++++++++++
OpenIDM Platform for building enterprise provisioning solutions
OpenDM Full-featured access management
OpenDJ Robust LDAP server for Java
在上表中,当我在查询下运行时,我得到了预期的前两个记录
DECLARE @searchInput varchar
SET @searchInput = 'dm'
SELECT * FROM ForgeRock
WHERE productName like '%DM%'
结果 用于构建企业置备解决方案的OpenIDM平台 OpenDM全功能访问管理
但是当我运行以下查询时,模式匹配似乎无法正常工作,并且我获得了所有记录。
DECLARE @searchInput varchar
SET @searchInput = 'dm'
SELECT * FROM ForgeRock
WHERE productName like '%'+@searchInput+'%'
答案 0 :(得分:4)
您没有声明varchar字符串的大小。默认值为1。在SELECT
上进行@searchInput
,亲自看看
DECLARE @searchInput varchar
SET @searchInput = 'dm'
SELECT @searchInput
答案 1 :(得分:0)
是的,就像@Lamu和@Squirrel所说的那样,您应该声明搜索字符串的长度,例如:
DECLARE @searchInput varchar(50)
答案 2 :(得分:0)
默认情况下,当您声明不带任何大小os的变量时,它将取为1。 例如,您有贴花
DECLARE @searchInput varchar(10)
SET @searchInput = 'dm'
如果不声明大小,则仅声明d,并且d在所有行中均存在,因此它将返回所有行。