如何删除某列的行值中包含两个 c 字符的所有行------patindex函数的使用
2012-02-03 08:44
363 查看
PATINDEX('%pattern%',expression), 返回指定表达式中第一次出现的起始位置;如果不存在,则返回零。
新建 测试表
create table a(zifu varchar(10) null)
insert table(zifu)
select 'ac'
union all
select 'b'
union all
select 'xccb'
union all
select 'abcauc90c'
union all
select 'c'
select * from a
/*结果*/
zifu
----------
ac
b
xccb
abcauc90c
c
(5 行受影响)
delete from a where patindex('%c%c%',zifu)>0
/*执行后结果*/
(2 行受影响)
/*查询删除后的结果*/
select * from a
zifu
----------
ac
b
c
(3 行受影响)
另一种解法:
思路:使用replace 函数,先将c字符替换为空,再用len函数对比替换前后的长度,如果再者相减差值大于等于2则删除这部分列。
delete from a where (len(zifu)-len(replace(zifu,'c','')) )>=2
新建 测试表
create table a(zifu varchar(10) null)
insert table(zifu)
select 'ac'
union all
select 'b'
union all
select 'xccb'
union all
select 'abcauc90c'
union all
select 'c'
select * from a
/*结果*/
zifu
----------
ac
b
xccb
abcauc90c
c
(5 行受影响)
delete from a where patindex('%c%c%',zifu)>0
/*执行后结果*/
(2 行受影响)
/*查询删除后的结果*/
select * from a
zifu
----------
ac
b
c
(3 行受影响)
另一种解法:
思路:使用replace 函数,先将c字符替换为空,再用len函数对比替换前后的长度,如果再者相减差值大于等于2则删除这部分列。
delete from a where (len(zifu)-len(replace(zifu,'c','')) )>=2
相关文章推荐
- 如何删除文本或excel表格内包含某一字符的所有行
- 使用正则表达式删除一个字符串中特定两个字符之间的所有字符
- 老男孩教育每日一题-2017年4月13日-当你删除的多个文件中包含空格或其他特殊字符,请问如何做
- (本程序功能:字符串A中找出包含字符串B中所有字符的位置并输出) 在使用全局变量m的时候,输出错误的结果,而用下面局部变量M就没问题。
- 如何使用UltraEdit去删除含有特写字符的行?
- 输入两个字符串,从第一字符串中删除第二个字符串中所有的字符
- 使用sed如何把每行从#开始的所有后面的字符清空?
- 输入两个字符串,从第一个字符串中,删除第二字字符串中的所有字符。
- 输入两个字符串,从第一个字符串中删除第二个字符串中出现过的所有字符
- 输入两个字符串,从第一字符串中删除第二个字符串中所有的字符
- 输入两个字符串,从第一字符串中删除第二个字符串中所有的字符(转自CSDN)
- Linux命令行下如何查找列出/usr/local这个目录下所有包含字符mrtg的文件
- 输入两个字符串,从第一字符串中删除第二个字符串中所有的字符
- ACM-输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”
- lintcode55:比较两个字符串A和B,确定A中是否包含B中所有的字符。
- 输入两个字符串,从第一字符串中删除第二个字符串中所有的字符
- C++实现输入两个字符串,从第一字符串中删除第二个字符串中所有的字符
- 还原Wss3.0内容数据库时遇到:"ComputerName\Microsoft##SSEE 上的 WSS_Content 包含用户定义的架构。数据库在能够使用之前必须为空。请删除所有表、存储过程以及其他对象,或使用其他数据库。 " 的提示,无法加载内容数据库
- 如何使用dw的查找功能,删除所有的链接即标签?
- 输入两个字符串,从第一字符串中删除第二个字符串中所有的字符