SQL Serve提供了简单的字符模糊匹配功能,比如:like, patindex,不过对于某些字符处理场景还显得并不足够,日常碰到的几个问题有: 1. 同一个字符/字符串,出现了多少次 2. 同一个字符,第N次出现的位置 3. 多个相同字符连续,合并为一个字符 4. 是否为有效IP/身份证号/手机号等 5. 去除所有数字/字母   一. 同一个字符/字符串,出现了多少次 同一个字符,将其替换为空串,即可计算 ) ) set @text = 'ABCBDBE' set @str = 'B' se…
sql server replace的替换字符,replace的使用 select REPLACE(name,'张','') * from entity_5c7a578c05c7042958d91485_goods select REPLACE(列名,'匹配的字符',‘想换成的字符’),*  from product…
近日因项目需求,需要在sql server中用到正则表达式,因Sql Server本身并不支持正则表达式,需要用到Clr函数. 在此记录一下步骤,与大家共享,虽然写的是原创,但有参考网上的文章. 1.使用 VS2010创建一个新的项目,选择[Visual C#  SQL CLR数据库项目],输入项目名称,我这里为:SqlClrFunctions 注意:因我的是sql server 2008 R2,所以选择.Net Framework 3.5(这一点很重要) 2.给项目添加一个类,我取名为:Sql…
[ERROR][com.alibaba.druid.filter.stat.StatFilter]merge sql error, dbType mysql, sql : select top 1 ddiary0_.diary_id as diary_id1_9_, ddiary0_.site_id as site_id26_9_, ddiary0_.catalog_id as catalog27_9_, ddiary0_.user_id as user_id28_9_, ddiary0_.an…
在T-SQL中我们经常批量操作时都会对字符串进行拆分,可是SQL Server中却没有自带Split函数,所以要自己来实现了.这里将字符串分割以table形式输出 语法如下: SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /* create by shuke.li 2020-9-15 */ create function [dbo].[SplitString] ( @Input nvarchar(max), --input string to…
这里提取指定符串"A"在字段中的出现次数SQL为: select len(keyword)-len(replace(keyword, 'A', ' ')) from 表 原理:用replace函数将要查找的字符替换为空字符,将替换之间的字符串长度-替换后字符串长度…
create table t(x int identity(1,1) primary key,v nvarchar(32));go insert into t(v) values('this is % line'),('this is 1 line'); 我们的目标是找到'this is % line' 这一行. select x,v from t where v like'%\%%' escape '\'; 第一个'%'用来匹配%前的串. 第二个'%'用来匹配串中的%. 第三个'%'用来匹配%…
select GetDate() --用DateName()就可以获得相应的年.月.日 Select Datename(year,GetDate())+'-'+Datename (month,GetDate())+'-'+Datename(day,GetDate()) --获得相应的时.分.秒 Select Datename(hour,GetDate()) +':'+ Datename(minute,GetDate())+':'+ Datename(second,GetDate()) --星期几…
举例: 我现在是需要查询这字段里包含1的数据  我如果直接charindex,那么11,12也会被包含. 解决(1): select * from ( select '1,2,12,111' as str union all select '2,12,111' union all ' ) t1 where ','+str+',' like'%,1,%' 解决(2): 利用如mysql中的find_in_set办法 自己写一个自定义函数split,利用outer apply,这个比较简单,这里不做…
举例: 我现在是需要查询这字段里包含1的数据 我如果直接charindex,那么11,12也会被包含. 解决(1): SELECT * FROM ( SELECT '1,2,12,111' AS str UNION ALL SELECT '2,12,111' UNION ALL SELECT '1' ) t1 WHERE ',' + str + ',' LIKE '%,1,%' 解决(2): 利用如mysql中的find_in_set办法 自己写一个自定义函数split,利用outer appl…