比如表TABLE1列 COL1(NVARCHAR),COL2(NVARCHAR),...
如果COL1列数据是空字符(''),
SELECT * FROM TABLE1 WHERE COL1=N'???'
???表示乱码的意思。查询结果:
包含所有COL1列数据为''的行。为什么会有如此现象?请高手分析一下问题

解决方案 »

  1.   

    SELECT * FROM TABLE1 WHERE COL1=N''这个就是空字符串咯,不过没看懂你问啥
      

  2.   


    ----------------------------------------
    SELECT * FROM TABLE1 WHERE COL1=N''
    SELECT * FROM TABLE1 WHERE COL1=N'???'
    麻烦版主看清楚一下先,上面两句是一样的?(???表示中文乱码。)
      

  3.   

    可能lz 写进去的时候没有用N 来转。
    本身就是乱的。所以筛选的话,也就筛出来了。 
      

  4.   

    插入USERNAME的时候用的是N''(空字符).
    SELECT * FROM  USER WHERE USERNAME=N'����' 
    SELECT * FROM  USER WHERE USERNAME=N'' 
    两个语句结果居然是一样的.
      

  5.   

    不可能吧,都不一样的SELECT UNICODE(' '),UNICODE(N''),UNICODE(N' '),UNICODE(N'???'),UNICODE('???')
    /*
                                                    
    ----------- ----------- ----------- ----------- -----------
    32          NULL        32          63          63(1 行受影响)
    */
      

  6.   


    插入USERNAME的时候用的是N''(空字符).
    SELECT * FROM  USER WHERE USERNAME=N'����' 
    SELECT * FROM  USER WHERE USERNAME=N'' 
    两个语句结果居然是一样的.
      

  7.   

    SELECT UNICODE(' '),UNICODE(N''),UNICODE(N' '),UNICODE(N'???'),UNICODE('����')
    /*
                                                    
    ----------- ----------- ----------- ----------- -----------
    32          NULL        32          63          63(1 行受影响)
    */
    乱码都是63,所以???还是����都一样,可是空字符串不一样,这就比较奇怪了。
      

  8.   

    當Unicode在 65519 到 65535 之間 編譯器會把它和空字符串匹配。
     SELECT UNICODE(COL1) AS [UNICODE(COL1)],UNICODE(N'����') AS [UNICODE(N'����')],COL1,N'����' AS [N'����'] FROM  table1 WHERE COL1=NCHAR(65518)
    /*
    UNICODE(COL1) UNICODE(N'����') COL1 N'����'
    ------------- ---------------- ---- -------(0 個資料列受到影響)
    */SELECT UNICODE(COL1) AS [UNICODE(COL1)],UNICODE(N'����') AS [UNICODE(N'����')],COL1,N'����' AS [N'����'] FROM  table1 WHERE COL1=NCHAR(65519)
    /*UNICODE(COL1) UNICODE(N'����') COL1 N'����'
    ------------- ---------------- ---- -------
    NULL          65533                 ����
    NULL          65533                 ����
    NULL          65533                 ����(3 個資料列受到影響)
    */SELECT UNICODE(COL1) AS [UNICODE(COL1)],UNICODE(N'����') AS [UNICODE(N'����')],COL1,N'����' AS [N'����'] FROM  table1 WHERE COL1=NCHAR(65535)
    /*
    UNICODE(COL1) UNICODE(N'����') COL1 N'����'
    ------------- ---------------- ---- -------
    NULL          65533                 ����
    NULL          65533                 ����
    NULL          65533                 ����(3 個資料列受到影響)
    */SELECT UNICODE(COL1) AS [UNICODE(COL1)],UNICODE(N'����') AS [UNICODE(N'����')],COL1,N'����' AS [N'����'] FROM  table1 WHERE COL1=NCHAR(65536)
    /*
    UNICODE(COL1) UNICODE(N'����') COL1 N'����'
    ------------- ---------------- ---- -------(0 個資料列受到影響)*/
      

  9.   


    當Unicode在 65519 到 65535 之間 編譯器會把它和空字符串匹配。???不是很理解这个,请指教