Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用字符串搜索表_Sql_Sql Server_Stored Procedures - Fatal编程技术网

Sql 使用字符串搜索表

Sql 使用字符串搜索表,sql,sql-server,stored-procedures,Sql,Sql Server,Stored Procedures,我有一个存储过程,它在表中搜索用户设置的变量。它工作正常,但搜索只找到字符串输入的第一个字母 我正在使用-> ALTER PROCEDURE [dbo].[test] @search_string varchar AS BEGIN SET NOCOUNT ON; IF (@search_string IS NOT NULL) OR (LEN(@search_string) > 0) SELECT [archive_id]

我有一个存储过程,它在表中搜索用户设置的变量。它工作正常,但搜索只找到字符串输入的第一个字母

我正在使用->

ALTER PROCEDURE [dbo].[test]
    @search_string varchar  
AS
BEGIN

    SET NOCOUNT ON;
    IF (@search_string IS NOT NULL) OR (LEN(@search_string) > 0)
        SELECT [archive_id]      
               [archive_id],
               [display_name]
        FROM [test1].[dbo].[ARCHIVE_id]
        WHERE [display_name] like @search_string+'%'; 
我想弄明白的是如何在display_name列中搜索整个单词

任何帮助都将不胜感激


标记

您必须声明变量的大小

ALTER PROCEDURE [dbo].[test]
    @search_string varchar(50)

这应该会起作用

您必须声明变量的大小

ALTER PROCEDURE [dbo].[test]
    @search_string varchar(50)
这应该有效

请参见


像“%”++@search\u string++“%”一样,我尝试过,但没有找到任何内容。您需要指定@search\u string的大小:
@search\u string varchar(80)
。默认大小为1。如“%”++@search\u string++“%”我尝试过,但没有找到任何内容。您需要指定@search\u string的大小:
@search\u string varchar(80)
。默认大小为1。问题是,如果在搜索子句中找到所有类型的结果(如nm_mpeg),而不仅仅是包含单词nexUse通配符的结果,我会搜索“nex”。应该是“%”++@variable++'%'如果我删除通配符,则不会得到任何结果*如上所述更新通配符谁否决了此操作?这是正确的答案。如果不指定默认大小,则只需一个字符。问题是,如果在搜索子句中找到所有类型的结果(如nm_mpeg),而不仅仅是包含单词nexUse通配符的结果,则我会搜索“nex”。应该是“%”++@variable++'%'如果我删除通配符,则不会得到任何结果*如上所述更新通配符谁否决了此操作?这是正确的答案。如果未指定默认大小,则此处仅使用一个字符