mysql 中用sql判断两个字段长度是不是相等
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 中用sql判断两个字段长度是不是相等相关的知识,希望对你有一定的参考价值。
比如
字段a varchar(200) 数据: abcd
字段b varchar(1000) 数据: 15,石家庄|15,石家庄|15,石家庄|15,石家庄|
字段b 需要以 | 分割。也可以说有几个 | 就算字段b的长度是几。
15,石家庄| 这算长度1。
查询字段a和字段b长度不等的数据:
select * from 表 where length(a) <> length(b)
正常是length(b) ,但现在字段b是用|分割的,怎么写
as
begin
declare @v int
set @v=1
declare @i int
set @i=charindex(\'|\',@col)
while(@i>0)
begin
set @v=@v+1
set @col=substring(@col,@i+1,len(@col))
set @i=charindex(\'|\',@col)
end
return @v
end
go
select dbo.mylength(\'123\') //结果是1
select dbo.mylength(\'|123\') //结果是2
select dbo.mylength(\'|123|\') //结果是3
你的语句就可以用:
select * from 表 where dbo.mylength(a) <> dbo.mylength(b)
--注意函数名前要加dbo. 参考技术A select * from 表 where char_length(a) <> char_length(b) - char_length(replace(b ,'|',''))
or
select * from 表 where length(a) <> length(b) - length(replace(b ,'|','')) 参考技术B 单一语句无法实现
Mysql去除中文字符&判断字段是不是有中文字符
参考技术A 背景:用户表中的name存的是用户名字的拼音和中文。
需求:名字去除掉所有的中文字符。
解决方案:
通过CONVERT(name USING ASCII)把中文转换为?,然后再进行替换。
引申问题:怎么判断字段包含中文字符
方法1:查询CONVERT(name USING ASCII)转换为后有?的数据。
方法2:通过正则表达式查询,\'[^ -~]\'或\'e[4-9][0-9a-f]4\'或者\'^(..)*(E[4-9])\'表示含中文。
方法3:通过length()和char_length()返回值不同进行查询。
参考链接:
( https://blog.csdn.net/u012731379/article/details/64125572 )
以上是关于mysql 中用sql判断两个字段长度是不是相等的主要内容,如果未能解决你的问题,请参考以下文章