--VARCHAR datatype
 CREATE TABLE #Test(TextField VARCHAR(50))
 
 INSERT INTO #Test
 SELECT 'Red' UNION
 SELECT 'Blue' UNION
 SELECT 'Green' UNION
 SELECT 'Yellow' UNION
 SELECT 'Orange' UNION
 SELECT 'Purple'
 
 DECLARE @TestVar VARCHAR
 SET @TestVar = 'Red'
 
 SELECT *
 FROM #Test
 WHERE TextField LIKE '%' + @TestVar + '%'
 
 DROP TABLE #Test
 
 How many records are returned from the above query?
 0
 1
 2
 3
 4
 5
 6
 
请您将结果贴在回复中。7日后结贴!

解决方案 »

  1.   

    我只知道 @TestVar = 'R'懒得数结果
      

  2.   

    Red
    Purple
    Orange
    Green
      

  3.   

     
     DECLARE @TestVar VARCHAR
     SET @TestVar = 'Red'SELECT @TestVar----
    R(1 行受影响)
      

  4.   

    返回4条记录DECLARE @TestVar VARCHAR  --默认长度为1
    SET @TestVar = 'Red'  --@TestVar='R'
      

  5.   

    如果未在数据定义或变量声明语句中指定 n,则默认长度为 1。如果在使用 CAST 和 CONVERT 函数时未指定 n,则默认长度为 30。
      

  6.   


    CREATE TABLE #Test(TextField VARCHAR(50))
     
     INSERT INTO #Test
     SELECT 'Red' UNION
     SELECT 'Blue' UNION
     SELECT 'Green' UNION
     SELECT 'Yellow' UNION
     SELECT 'Orange' UNION
     SELECT 'Purple'
     
     DECLARE @TestVar VARCHAR
     SET @TestVar = 'Red'select len(@TestVar)结果长度为1,@TestVar 也就只能是“R”了,So
      

  7.   

    結果:
    TextField
    Green
    Orange
    Purple
    Red
      

  8.   

    DECLARE @TestVar VARCHAR-- 等价于VARCHAR(1)
     SET @TestVar = 'Red'
      

  9.   


    TextField                                          
    -------------------------------------------------- 
    Green
    Orange
    Purple
    Red(所影响的行数为 4 行)
      

  10.   

    结果是 四条!
    DECLARE @TestVar VARCHAR
    没有设定长度 所以不管赋什么值,都只取第一个字符。
    查询语句为:
     SELECT *
     FROM #Test
     WHERE TextField LIKE '%' + 'R' + '%'谢谢楼主的好帖,让大家深入了解varchar定义
      

  11.   

    CREATE TABLE #Test(TextField VARCHAR(50))
     
     INSERT INTO #Test
     SELECT 'Red' UNION
     SELECT 'Blue' UNION
     SELECT 'Green' UNION
     SELECT 'Yellow' UNION
     SELECT 'Orange' UNION
     SELECT 'Purple'
     
     DECLARE @TestVar VARCHAR
     SET @TestVar = 'Red'
     
     SELECT *
     FROM #Test
     WHERE TextField LIKE '%' + @TestVar + '%'
     
     DROP TABLE #Test/*
    TextField                                          
    -------------------------------------------------- 
    Green
    Orange
    Purple
    Red(所影响的行数为 4 行)*/CREATE TABLE #Test(TextField VARCHAR(50))
     
     INSERT INTO #Test
     SELECT 'Red' UNION
     SELECT 'Blue' UNION
     SELECT 'Green' UNION
     SELECT 'Yellow' UNION
     SELECT 'Orange' UNION
     SELECT 'Purple'
     
     DECLARE @TestVar VARCHAR(10)
     SET @TestVar = 'Red'
     
     SELECT *
     FROM #Test
     WHERE TextField LIKE '%' + @TestVar + '%'
     
     DROP TABLE #Test/*
    TextField                                          
    -------------------------------------------------- 
    Red(所影响的行数为 1 行)
    */貌似楼主有点无聊.
      

  12.   

    结果 4 Green
    Orange
    Purple
    Red
      

  13.   

     DECLARE @TestVar VARCHAR
     SET @TestVar = 'Red'看明白这个的意思了
      

  14.   


    Green
    Orange
    Purple
    Red
      

  15.   

    TextField                                          
    -------------------------------------------------- 
    Green
    Orange
    Purple
    Red(所影响的行数为 4 行
      

  16.   

    CREATE TABLE #Test(TextField VARCHAR(50))
     
     INSERT INTO #Test
     SELECT 'Red' UNION
     SELECT 'Blue' UNION
     SELECT 'Green' UNION
     SELECT 'Yellow' UNION
     SELECT 'Orange' UNION
     SELECT 'Purple'
     
     DECLARE @TestVar VARCHAR
     SET @TestVar = 'Red'
     
     SELECT *
     FROM #Test
     WHERE TextField LIKE '%' + @TestVar + '%'
     /*(6 行受影响)
    TextField
    --------------------------------------------------
    Green
    Orange
    Purple
    Red(4 行受影响)*/
    select @@version
    /*
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    Microsoft SQL Server 2005 - 9.00.4053.00 (Intel X86) 
    May 26 2009 14:24:20 
    Copyright (c) 1988-2005 Microsoft Corporation
    Developer Edition on Windows NT 6.1 (Build 7600: )
    (1 行受影响)
    */
     DROP TABLE #Test
      

  17.   

    CREATE TABLE #Test(TextField VARCHAR(50))
     
     INSERT INTO #Test
     SELECT 'Red' UNION
     SELECT 'Blue' UNION
     SELECT 'Green' UNION
     SELECT 'Yellow' UNION
     SELECT 'Orange' UNION
     SELECT 'Purple'
     
     DECLARE @TestVar VARCHAR
     SET @TestVar = 'RedXXXXXXXXXXXX'
     
     SELECT *
     FROM #Test
     WHERE TextField LIKE '%' + @TestVar + '%'
     /*(6 行受影响)
    TextField
    --------------------------------------------------
    Green
    Orange
    Purple
    Red(4 行受影响)*/
    select @@version
    /*
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    Microsoft SQL Server 2005 - 9.00.4053.00 (Intel X86) 
    May 26 2009 14:24:20 
    Copyright (c) 1988-2005 Microsoft Corporation
    Developer Edition on Windows NT 6.1 (Build 7600: )
    (1 行受影响)
    */
     DROP TABLE #Test
      

  18.   

    问题在这里 DECLARE @TestVar VARCHAR-----》这个varchar没有给长度,就是varchar(1)所以 SET @TestVar = 'Red'结果 @TestVar就是 'R所以结果就不奇怪了
      

  19.   

    如果未在数据定义或变量声明语句中指定 n,则默认长度为 1。如果在使用 CAST 和 CONVERT 函数时未指定 n,则默认长度为 30。
    记住这个知识点吧
      

  20.   

    其实这个问题和系统的配置是有关系的,LZ出的这个题目真的是太牛了。关键是LZ用了大小写的。如果设置系统为区分大小写,那么结果就只有一条,否则就是四条了。
    CREATE TABLE #Test(TextField VARCHAR(50))INSERT INTO #TestSELECT 'Red' UNIONSELECT 'Blue' UNIONSELECT 'Green' UNIONSELECT 'Yellow' UNIONSELECT 'Orange' UNIONSELECT 'Purple'DECLARE @TestVar VARCHARSET @TestVar = 'Red'/*区分大小写*/--ALTER TABLE #Test ALTER COLUMN TextField varchar(50) COLLATE Chinese_PRC_CS_AS /*不区分大小写*/ALTER TABLE #Test ALTER COLUMN TextField varchar(50) COLLATE  Chinese_PRC_CI_ASSELECT *FROM #TestWHERE TextField LIKE '%' + @TestVar + '%'drop table #Test
    可以试试!嘿嘿!
      

  21.   


     DECLARE @TestVar VARCHAR
     SET @TestVar = 'Red'
     SELECT @TestVar 
    --结果是‘R’,所以。。