sql过滤数字
Ⅰ SQL 查询语句问题(过滤数字)
select * from tab where cn not like '%[0-9]%'
Ⅱ SQL中怎样提取纯数字或者纯字母的字段
完全按照DB2语法设计:
drop function TEST
go
create function test(@input varchar(100))
returns int
begin atomic
declare @int int default 0;
declare @input_lenght int default 0;
set @input_lenght = length(@input);
while @input_lenght <> 0 do
if ( substr(@input,length(@input) - @input_lenght +1,1) in ('0','1','2','3','4','5','6','7','8','9') ) then
set @int = @int + 0;
elseif ( substr(@input,length(@input) - @input_lenght +1,1) in ('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z')) then
set @int = @int - 1;
end if;
set @input_lenght = @input_lenght -1;
end while;
if ( @int = 0 or @int = -1* length(@input)) then --- 如果累积为0全是数字;如果累积正好是-1乘以长度则正好全是字段
return 0;
else
return 1;
end if;
end
go
select test ('123456') from sysibm.al 结果是 0
select test ('123b456a') from sysibm.al 结果是 1
select test ('abcdefg') from sysibm.al 结果是 0
Ⅲ sql 去除字段中非数字字符
思路:找到第二个$,更新数据为$后面的
实例:
UPDATE A
SET A.a1 = (
SUBSTR(a1, INSTR(a1, $, '2') + 1, LENGTH(a1))
)
Ⅳ 用SQL语句实现数据筛选
--将字段条件筛选建立临时表
selecttop100*
into#temp
fromtable
wherenamenotin("%批发%","不含'%厂")
andregionin("餐饮",..."副食")--填写完每个经营面
--返回数据表,企业数和个体户,这个区分不知道用什么,所以第二个字段还需要改
selectprovince,count(distinctname)asnum_company,
casewhenname="个体户"thencount(distinctname)asnum_indivial
from#temp
Ⅳ sql 语句 急!!!! 数据将英文和数字去掉,只保留汉字的sql语句
1、创建测试表,
create table test_replace_str(value varchar2(200));
4、编写语句,将英文和回数字去掉答,只保留汉字;
select t.*, regexp_replace(value, '[a-zA-Z0-9]', '') sec
from test_replace_str t;
Ⅵ 如何使用SQL语句把字符字段里的数字筛选出来
可以参考使用如下写法
如果要全部数据则可以
select * from table T1 where 字段 = (select max(字段) from table T2 where T1.字段2 = T2.字段2)
或
select * from table T1 where not exists(select * from table T2 where T1.字段2 = T2.字段2 and T1.字段 < T2.字段
如果只是数据行数则可以
select count(distinct 字段)from table
Ⅶ 用sql查询时,怎么判断字段中是否含有数字,如果有就把数字去掉
/*
用正则表达式或者自定义函数
下面是用正则表达式的代码
如果报错的话,需要开启OleAutomationProceres
execsp_configure'showadvancedoptions',1;
RECONFIGURE;
execsp_configure'OleAutomationProceres',1;
RECONFIGURE;
execsp_configure'showadvancedoptions',0;
RECONFIGURE;
*/
--能按正则表达式替换的函数
CreateFunction[dbo].[MyReplace](@RegVarchar(1000),@SourceVarchar(4000),@StrVarchar(1000))
returnssql_variant
As
Begin
Declare@ErrInt
Declare@objInt
Declare@Rstsql_variant
EXEC@Err=Sp_OACreate'VBScript.RegExp',@objOUTPUT
If@Err<>0GoToLB
EXEC@Err=Sp_OASetProperty@obj,'Pattern',@Reg
If@Err<>0GoToLB
EXEC@Err=Sp_OASetProperty@obj,'Global','True'
If@Err<>0GoToLB
EXEC@Err=Sp_OASetProperty@obj,'IgnoreCase','False'
If@Err<>0GoToLB
EXEC@Err=Sp_OAMethod@obj,'Replace',@RstOUTPUT,@source,@Str
If@Err<>0GoToLB
EXEC@Err=Sp_OADestroy@obj
If@Err<>0GoToLB
Return@Rst
LB:
EXECSp_OADestroy@obj
RETURNNull
End
--查询(把所有数字替换为空)
selectdbo.myreplace('d',字段,'')from表
Ⅷ SQL 过滤字符字段值
select * from spk where isnumeric(spbh)=0
解释:
ISNUMERIC
确定表达式是否为一个有效的数字类型。
语法
ISNUMERIC ( expression )
参数
expression
要计算的表达式。
返回类型
int
注释
当输入表达式得数为一个有效的整数、浮点数、money 或 decimal 类型,那么 ISNUMERIC 返回 1;否则返回 0。返回值为 1 确保可以将 expression 转换为上述数字类型中的一种。
Ⅸ sql查询过滤掉数字,现表A中有一个字符串student_id字段,里面存的应该是126356546这样的字符串
/*
方案一:
把student_id不是数字的取出来,然后用是数字最大的一个student_id+记录号进行编号(这里考虑student_id是主键不能重复的情况)
然后把这个编号更新给student_id
*/
With CT
As
(
Select student_id,(Select MAX(student_id) From T
Where isnumeric(student_id)=1)+ROW_NUMBER()Over(Order By student_id)
As cnt From T
Where isnumeric(student_id)=0
)
Update CT Set student_id=cnt
/*
方案二
不是数字的id,分别把里面的字母A替换为1,B替换为2,依次
思路
把不是字母id的,按字母拆分,然后把他的Ascii-64再合并成一个字符串
最后用这个字符串更新给id
(不能保证关键是否重复)
*/
With CT
As
(
Select student_id,SUBSTRING(student_id,1,1) As Tmp,1 As LV From T Where ISNUMERIC(student_id)=0
Union All
select student_id,SUBSTRING(student_id,LV+1,1) ,LV+1 From CT Where LV<LEN(student_id)
)
Update T Set student_id=Rst
From(
Select student_id,
(Select Convert(Varchar(2),Unicode(Upper(Tmp))-64) From CT
Where student_id=A.student_id
For XML Path('')) AS Rst
FROM CT A
Group By student_id) s
Where T.student_id=s.student_id
Ⅹ SQL中select语句如何过滤出字段中第1位数字符合设定条件的行
SELECT * FROM 表名 WHERE (列名 LIKE '4%')
SELECT * FROM 表名 WHERE (列名 NOT LIKE '4%')