where xm like '%军%'orexec('select * from table where xm like ''%'+@MXM+'%''')

解决方案 »

  1.   

    select * from tablename where xm like '%军%'
      

  2.   

    select * from 表 where xm like '%军%'
    --------------------------^^^^模糊查询,%是通配符
      

  3.   

    使用 LIKE 的模式匹配
    当搜索 datetime 值时,推荐使用 LIKE,因为 datetime 项可能包含各种日期部分。例如,如果将值 19981231 9:20 插入到名为 arrival_time 的列中,则子句 WHERE arrival_time = 9:20 将无法找到 9:20 字符串的精确匹配,因为 SQL Server 将其转换为 1900 年 1 月 1 日上午 9:20。然而,子句 WHERE arrival_time LIKE '%9:20%' 将找到匹配。LIKE 支持 ASCII 模式匹配和 Unicode 模式匹配。当所有参数,包括 match_expression、pattern 和 escape_character(如果有)都是 ASCII 字符数据类型时,将执行 ASCII 模式匹配。如果其中任何参数属于 Unicode 数据类型,则所有参数将被转换为 Unicode 并执行 Unicode 模式匹配。当对 Unicode 数据(nchar 或 nvarchar 数据类型)使用 LIKE 时,尾随空格是有意义的。但是对于非 Unicode 数据,尾随空格没有意义。Unicode LIKE 与 SQL-92 标准兼容。ASCII LIKE 与 SQL Server 的早期版本兼容。下面的一系列示例显示 ASCII LIKE 模式匹配与 Unicode LIKE 模式匹配所返回的行之间的差异:-- ASCII pattern matching with char column
    CREATE TABLE t (col1 char(30))
    INSERT INTO t VALUES ('Robert King')
    SELECT * 
    FROM t 
    WHERE col1 LIKE '% King'   -- returns 1 row-- Unicode pattern matching with nchar column
    CREATE TABLE t (col1 nchar(30))
    INSERT INTO t VALUES ('Robert King')
    SELECT * 
    FROM t 
    WHERE col1 LIKE '% King'   -- no rows returned-- Unicode pattern matching with nchar column and RTRIM
    CREATE TABLE t (col1 nchar (30))
    INSERT INTO t VALUES ('Robert King')
    SELECT * 
    FROM t 
    WHERE RTRIM(col1) LIKE '% King'   -- returns 1 row说明  如果使用 LIKE 进行字符串比较,模式字符串中的所有字符都有意义,包括起始空格或尾随空格。
    使用 % 通配符
    如果指定 LIKE '5%',SQL Server 将搜索后面带有零个或多个任意字符的数字 5。 例如,此查询将显示数据库中所有的系统表,因为它们都以字母 sys 开始:SELECT TABLE_NAME
    FROM INFORMATION_SCHEMA.TABLES
    WHERE TABLE_NAME LIKE 'sys%'说明  请注意:系统表可以随版本不同而更改。推荐使用信息架构视图或适用的存储过程处理 SQL Server 系统表。
    若要查阅非系统表的所有对象,请使用 NOT LIKE 'sys%'。如果共有 32 个对象且 LIKE 找到 13 个与模式匹配的名称,则 NOT LIKE 将找到 19 个与 LIKE 模式不匹配的对象。使用 LIKE '[^s][^y][^s]%' 模式不一定每次找到的名称都相同。可能仅得到 14 个名称(而不是 19 个),除了系统表名称外,所有以 s 开始或第二个字母为 y 或第三个字母为 s 的名称也都将从结果中消除。这是因为用反向通配符匹配字符串是分步骤进行计算的,一次一个通配符。如果在计算过程中任一环节匹配失败,那么就会将其消除。将通配符作为文字使用
    可以将通配符模式匹配字符串用作文字字符串,方法是将通配符放在括号中。下表显示了使用 LIKE 关键字和 [ ] 通配符的示例。符号 含义 
    LIKE '5[%]' 5% 
    LIKE '[_]n' _n 
    LIKE '[a-cdf]' a、b、c、d 或 f 
    LIKE '[-acdf]' -、a、c、d 或 f 
    LIKE '[ [ ]' [ 
    LIKE ']' ] 
    LIKE 'abc[_]d%' abc_d 和 abc_de 
    LIKE 'abc[def]' abcd、abce 和 abcf 
    使用 ESCAPE 子句的模式匹配
    可搜索包含一个或多个特殊通配符的字符串。例如,customers 数据库中的 discounts 表可能存储含百分号 (%) 的折扣值。若要搜索作为字符而不是通配符的百分号,必须提供 ESCAPE 关键字和转义符。例如,一个样本数据库包含名为 comment 的列,该列含文本 30%。若要搜索在 comment 列中的任何位置包含字符串 30% 的任何行,请指定由 WHERE comment LIKE '%30!%%' ESCAPE '!' 组成的 WHERE 子句。如果不指定 ESCAPE 和转义符,SQL Server 将返回所有含字符串 30 的行。下例说明如何在 pubs 数据库 titles 表的 notes 列中搜索字符串"50% off when 100 or more copies are purchased":USE pubs
    GO
    SELECT notes
    FROM titles
    WHERE notes LIKE '50%% off when 100 or more copies are purchased' 
       ESCAPE '%'
    GO
      

  4.   

    declare @strcondition varchar(100)
    declare @mxm varchar(10)
    set @mxm = '军'
    set @strcondition='%' + @mxm + '%'
    select * from tb1 where xm LIKE @strcondition