1、如何从一批手机号码中,选出最后4位不能含有“4”的号码,就是最后4位任意一位都不带有“4”
这个号码,并且手机的前面7位必须是:1381508的所有号码。用like实现,晕,搞了半天,搞不出来。我发出我写的sql:SELECT *
FROM SystemNumber
WHERE (MobileNumber LIKE '1381508%') AND (MobileNumber NOT LIKE '%4444')以上这句执行后,依然会输出尾数带'4'的号码

解决方案 »

  1.   

    SELECT *
    FROM SystemNumber
    WHERE (MobileNumber LIKE '
    %1381508%') AND (MobileNumber NOT LIKE '%4%')
      

  2.   

    SELECT *
    FROM SystemNumber
    WHERE (MobileNumber LIKE '1381508%') AND (MobileNumber NOT LIKE '%4%')
    发果1381508这里面包函4的话,这个方法不行
      

  3.   

    应该是:
    SELECT *
    FROM SystemNumber
    WHERE (MobileNumber LIKE 
    '1381508%') AND (RIGHT(MobileNumber) NOT LIKE '%4%')
      

  4.   

    Create Table test(tstr varchar(12))
    Insert into test Select '13812334567' Union All
    Select '13879635479' Union All
    Select '13807968850' Union All
    Select '13837006363' Union All
    Select '13533896346' Union All
    Select '13456807374'Select * From test Where tstr like '%[^4][^4][^4][^4]'Drop Table test/*
    tstr         
    ------------ 
    13807968850
    13837006363(所影响的行数为 2 行)
    */
      

  5.   

    纠正,我那个漏了一点点
    SELECT *
    FROM SystemNumber
    WHERE (MobileNumber LIKE 
    '1381508%') AND (RIGHT(MobileNumber,4) NOT LIKE '%4%')
    应该是正解吧
      

  6.   

    1、如何从一批手机号码中,选出最后4位含有“4”的号码,就是最后4位任意一位都可能带有“4”这个号码语句如下:
    select convert(bigint,phoneCode ) from tableName
    where convert(bigint,phoneCode)  like '%4___'
    orconvert(bigint,phoneCode)  like '%_4__'
    orconvert(bigint,phoneCode)  like '%__4_'
    or convert(bigint,phoneCode)  like '%___4'现在的问题是,最后四位号码出现“4”的位置是由客户自己选择的,他可能要前面两位,也可能只要中间一位带4的,就是4的位置是不固定的,我应该怎么写呢???我已经做了4个文本框给客户选择,一般来说,客户不可能全部填写4的。
      

  7.   

    SELECT *
    FROM SystemNumber
    WHERE (left(MobileNumber,7)='1381508%') AND (RIGHT(MobileNumber,4) NOT LIKE '%4%')
      

  8.   

    用户在选择号码时,尾数是由用户自己选择的,而且位置每次不一样,我该如何写这个sql语句/ 
      

  9.   

    生成一个变量sel4,该变量是按客户要求生成的,具体方法很好实现,然后:SELECT *
    FROM SystemNumber
    WHERE (left(MobileNumber,7)='1381508%') AND (RIGHT(MobileNumber,4)  LIKE '%"+sel4+"%')
      

  10.   


    SELECT *
    FROM SystemNumber
    WHERE (MobileNumber LIKE '1381508%') AND (CHARINDEX(MobileNumber,'4')<8)
      

  11.   

    各位大哥,真对不起,也许是我表达能力太差了,我再重复一下真实的问题:现在页面上有四个文本框,用来给客户输入一些数字。输入的这些数字,将用来作为sql条件,列出所有的手机号码,但这些机号的最后四位,不包含客户输入的这些数字,因为这些数字是“不吉利”的号,用户在选手机号码时,当然不希望这些数字出现在最后4位中。
    用户可以在这四个文本框中全部输入他认为不吉利的数字,不一定非要把4个文本框填全。可以写3个,也可以写2个或1个。再根据条件列出所有尾数不包含这些数字的手机号码不知用一句或几句sql语句能搞定???
    麻烦了!
      

  12.   

    --我在SQL SERVER中测试了一下,是可以正确查询得,不过不同数据库方法会略有不同
    select * from systemnumber where left(mobilenumber,7)='1381508' and right(mobilenumber,4) not like ('%4%')
      

  13.   

    CHARINDEX查询字符在列中的位置,只要最后四位没有‘4’就行了阿。
      

  14.   

    用这个 SELECT 
             * 
    FROM 
            SystemNumber 
    WHERE 
             LEFT(mobilenumber, 7) = '1381508' AND
    SUBSTRING(RIGHT(mobilenumber, 4), 1, 1) <> @A AND 
    SUBSTRING(RIGHT(mobilenumber, 4), 2, 1) <> @B AND
    SUBSTRING(RIGHT(mobilenumber, 4), 3, 1) <> @C AND
    SUBSTRING(RIGHT(mobilenumber, 4), 4, 1) <> @D@A, @B, @C, @D 就是你的文本框中用户填的值,不填,则是‘’