如何查询出数据库里不含字母和数字的记录

时间:2022-02-02 19:38:08
SELECT * FROM abc where xjzh not like '%[a-z]%' and  xjzh not like '%[0-9]%' 

这样不能把其他字符加数字或字母的查出来,例如:啊啊啊001,棒棒棒ABC。
因为以上数据里包含了字母或者数字

我现在要把只要该列里有不是数字或者字母的挑出来。

5 个解决方案

#1


SELECT * FROM abc where xjzh not like '%[a-z]%'  or  xjzh not like '%[0-9]%' 

#2


引用 1 楼 u010024618 的回复:
SELECT * FROM abc where xjzh not like '%[a-z]%'  or  xjzh not like '%[0-9]%' 

因为是两个条件选其一,会把全部数字,全部字母的搜出来的。

#4


SELECT * FROM abc where xjzh like '%[^0-9a-zA-Z]%'
 

#5


引用 2 楼 BabySky716 的回复:
Quote: 引用 1 楼 u010024618 的回复:

SELECT * FROM abc where xjzh not like '%[a-z]%'  or  xjzh not like '%[0-9]%' 

因为是两个条件选其一,会把全部数字,全部字母的搜出来的。

可以问您一个问题吗?这里有9行记录,哪些记录要排除呢
INSERT INTO #test( ID, Val ) VALUES(1,N'啊啊啊001')
INSERT INTO #test( ID, Val ) VALUES(2,N'棒棒棒ABC')
INSERT INTO #test( ID, Val ) VALUES(3,N'123ABC')
INSERT INTO #test( ID, Val ) VALUES(4,N'123axzQ')
INSERT INTO #test( ID, Val ) VALUES(5,N'哦哦ab')
INSERT INTO #test( ID, Val ) VALUES(6,N'11哦哦ab')
INSERT INTO #test( ID, Val ) VALUES(7,N'1111')
INSERT INTO #test( ID, Val ) VALUES(8,N'xyz')
INSERT INTO #test( ID, Val ) VALUES(9,N'ABC')

另外,
SELECT * FROM abc where xjzh not like '%[a-z]%' or  xjzh not like '%[0-9]%' 

的等价逻辑是:
SELECT * FROM abc
EXCEPT
SELECT * FROM abc WHERE   ( xjzh  like '%[a-z]%') AND   (xjzh  like '%[0-9]%')

也就是先查出既包含[a-z|A-Z]和[0-9]的字串,然后对所有记录取补集

#1


SELECT * FROM abc where xjzh not like '%[a-z]%'  or  xjzh not like '%[0-9]%' 

#2


引用 1 楼 u010024618 的回复:
SELECT * FROM abc where xjzh not like '%[a-z]%'  or  xjzh not like '%[0-9]%' 

因为是两个条件选其一,会把全部数字,全部字母的搜出来的。

#3


#4


SELECT * FROM abc where xjzh like '%[^0-9a-zA-Z]%'
 

#5


引用 2 楼 BabySky716 的回复:
Quote: 引用 1 楼 u010024618 的回复:

SELECT * FROM abc where xjzh not like '%[a-z]%'  or  xjzh not like '%[0-9]%' 

因为是两个条件选其一,会把全部数字,全部字母的搜出来的。

可以问您一个问题吗?这里有9行记录,哪些记录要排除呢
INSERT INTO #test( ID, Val ) VALUES(1,N'啊啊啊001')
INSERT INTO #test( ID, Val ) VALUES(2,N'棒棒棒ABC')
INSERT INTO #test( ID, Val ) VALUES(3,N'123ABC')
INSERT INTO #test( ID, Val ) VALUES(4,N'123axzQ')
INSERT INTO #test( ID, Val ) VALUES(5,N'哦哦ab')
INSERT INTO #test( ID, Val ) VALUES(6,N'11哦哦ab')
INSERT INTO #test( ID, Val ) VALUES(7,N'1111')
INSERT INTO #test( ID, Val ) VALUES(8,N'xyz')
INSERT INTO #test( ID, Val ) VALUES(9,N'ABC')

另外,
SELECT * FROM abc where xjzh not like '%[a-z]%' or  xjzh not like '%[0-9]%' 

的等价逻辑是:
SELECT * FROM abc
EXCEPT
SELECT * FROM abc WHERE   ( xjzh  like '%[a-z]%') AND   (xjzh  like '%[0-9]%')

也就是先查出既包含[a-z|A-Z]和[0-9]的字串,然后对所有记录取补集