‘壹’ 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查询剔除字段中的数字,只保留不含数字的文本
/*用正则表达式或者自定义函数下面是用正则表达式的代码如果报错的话,需要开启Ole Automation Proceres exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Proceres',1;RECONFIGURE;exec sp_configure 'show advanced options', 0;RECONFIGURE;*/--能按正则表达式替换的函数Create Function [dbo].[MyReplace](@Reg Varchar(1000),@Source Varchar(4000),@Str Varchar(1000))returns sql_variant AsBegin Declare @Err Int Declare @obj Int Declare @Rst sql_variant EXEC @Err=Sp_OACreate 'VBScript.RegExp',@obj OUTPUT If @Err<>0 GoTo LB EXEC @Err=Sp_OASetProperty @obj,'Pattern',@Reg If @Err<>0 GoTo LB EXEC @Err=Sp_OASetProperty @obj,'Global','True' If @Err<>0 GoTo LB EXEC @Err=Sp_OASetProperty @obj,'IgnoreCase','False' If @Err<>0 GoTo LB EXEC @Err=Sp_OAMethod @obj,'Replace',@Rst OUTPUT,@source,@Str If @Err<>0 GoTo LB EXEC @Err=Sp_OADestroy @obj If @Err<>0 GoTo LB Return @RstLB: EXEC Sp_OADestroy @obj RETURN NullEnd --查询(把所有数字替换为空)select dbo.myreplace('\d',字段,'') from 表
‘叁’ SQL 查询语句问题(过滤数字)
where (cn not like '%0%') and (cn not like '%1%') .....(cn not like '%9%')
这样不就可以了
‘肆’ 用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语句如何过滤出字段中第1位数字符合设定条件的行
假设表名为table1,第一列列名为column1,
则查询出第一位是“4”的记录:
select * from table1 where left(cast(column1 as varchar(255)),1)='4'
查询出第一位不是“4”的记录:
select * from table1 where left(cast(column1 as varchar(255)),1)<>'4'
‘陆’ sql语句中sum如何过滤某一行的数据
select sum(工资) from table where 编号 not in ('009','100');
‘柒’ sqlserver的Tsql怎么将某字段的文字过滤掉
CREATEFunction[dbo].[RemoveNonNumericCharacters](@TempVarChar(1000))
ReturnsVarChar(1000)
AS
Begin
WhilePatIndex('%[^0-9]%',@Temp)>0
Set@Temp=Stuff(@Temp,PatIndex('%[^0-9]%',@Temp),1,'')
Return@TEmp
End
‘捌’ sql语句查询过滤重复数据
1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断
复制代码代码如下:
select * from people
where peopleId in (select peopleId from people group by peopleId having count
(peopleId) > 1)
2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录
复制代码代码如下:
delete from people
where peopleId in (select peopleId from people group by peopleId having count
(peopleId) > 1)
and rowid not in (select min(rowid) from people group by peopleId having count(peopleId
)>1)
‘玖’ pg数据库sql如何过滤掉以9开头的数字
select *
from table
where column not like '9%'
‘拾’ 各位高手大大们,用SQL怎么把一个由字符和数字组成的字段中的数字筛选出来,具体情况看补充哦。
参考
--提取数字
IF OBJECT_ID('DBO.GET_NUMBER2') IS NOT NULL
DROP FUNCTION DBO.GET_NUMBER2
GO
CREATE FUNCTION DBO.GET_NUMBER2(@S VARCHAR(100))
RETURNS VARCHAR(100)
AS
BEGIN
WHILE PATINDEX('%[^0-9]%',@S) > 0
BEGIN
set @s=stuff(@s,patindex('%[^0-9]%',@s),1,'')
END
RETURN @S
END
GO
--测试
PRINT DBO.GET_NUMBER('呵呵ABC123ABC')
GO
--123