在sql中只获取字母数字行?

Reg*_*ser 2 sql sql-server sql-server-2008

我列有数据

CLARK
KING
MILLER
SMITH, $800 .00
JONES, $2975.00
SCOTT, $3000.00
ADAMS, $1100.00
FORD, $3000.00
ALLEN30  
WARD30  
MARTIN30  
BLAKE30  
TURNER30  
JAMES30  
Run Code Online (Sandbox Code Playgroud)

我只想要字母数字行

SMITH, $800 .00
JONES, $2975.00
SCOTT, $3000.00
ADAMS, $1100.00
FORD, $3000.00
Run Code Online (Sandbox Code Playgroud)

除了这行,所有行都应包括在内?

我怎么能得到这个?

Tim*_*ter 6

你可以使用PATINDEX:

DECLARE @test table(col varchar(30));
INSERT INTO @test
   SELECT * FROM (SELECT 'CLARK' UNION ALL SELECT 'KING' UNION ALL SELECT 'MILLER' UNION ALL SELECT 'SMITH, $800 .00' UNION ALL SELECT 'JONES, $2975.00' UNION ALL SELECT 'SCOTT, $3000.00' UNION ALL SELECT 'ADAMS, $1100.00' UNION ALL SELECT 'FORD, $3000.00' UNION ALL SELECT 'ALLEN30' UNION ALL SELECT 'WARD30' UNION ALL SELECT 'MARTIN30' UNION ALL SELECT 'BLAKE30' UNION ALL SELECT 'TURNER30' UNION ALL SELECT 'JAMES30')AS T(Spalte)
Run Code Online (Sandbox Code Playgroud)

Patindex返回指定表达式中第一次出现模式的起始位置.由于我使用的模式与任何非字母数字(^通配符 - 字符)匹配,因此仅返回仅包含字母数字字符(+空格)的记录:

SELECT col 
FROM   @test
WHERE  PATINDEX('%[^a-zA-Z0-9 ]%',col) = 0
Run Code Online (Sandbox Code Playgroud)

结果:

CLARK
KING
MILLER
ALLEN30
WARD30
MARTIN30
BLAKE30
TURNER30
JAMES30
Run Code Online (Sandbox Code Playgroud)