SQL判断某列中是否包含中文字符、英文字符、纯数字,数据截取
SQL判断某列中是否包含中文字符、英文字符、纯数字
一、包含中文字符
select * from 表名 where 列名 like '%[吖-座]%'
[吖-座]是中文字符集第一个到最后一个的范围,虽然匹配准确,但是用Like的效率很低
在使用mysql时候,某些字段会存储中文字符,或是包含中文字符的串,查询出来的方法是:
SELECT column FROM table WHERE length(column)!=char_length(column)
原理其实很简单,当字符集为UTF-8,并且字符为中文时,length() 和 char_length() 两个方法返回的结果是不相同的。
二、包含英文字符
select * from 表名 where 列名 like '%[a-z]%' or like '%[A-Z]%'
三、包含纯数字
select * from 表名 where 列名 like '%[0-9]%'
方法二:通配符。高逼格使用。
适用场景:2005及以上(2005之前的版本没试过,应该也支持)
--返回0-则为纯数字(支持正负数,小数点)SELECT PATINDEX('%[^0-9|.|-|+]%','2.2')--返回0--返回0-则为纯整数
select PATINDEX('%[^0-9]%', '2.2') --返回 非0的位置
四、从sqlserver中提取数据截取字符
1、LOCATE(substr , str ):返回子串 substr 在字符串 str 中第一次出现的位置,如果字符substr在字符串str中不存在,则返回0;
2、POSITION(substr IN str ):返回子串substr 在字符串 str 中第一次出现的位置,如果字符substr在字符串str中不存在,与LOCATE函数作用相同;
3、LEFT(str, length):从左边开始截取str,length是截取的长度;
4、RIGHT(str, length):从右边开始截取str,length是截取的长度;
5、SUBSTRING_INDEX(str ,substr ,n):返回字符substr在str中第n次出现位置之前的字符串;
6、SUBSTRING(str ,n ,m):返回字符串str从第n个字符截取到第m个字符;
7、REPLACE(str, n, m):将字符串str中的n字符替换成m字符;
8、LENGTH(str):计算字符串str的长度。
是否包含中文基本原理:字符的 unicode编码范围。
0~9 : 48~57
A~Z :65 ~ 90
a~z : 97~ 122汉字unicode编码范围:[0x4e00,0x9fa5](或十进制[19968,40869])
SELECT * FROM dbo.person WHERE UNICODE(字段) BETWEEN 19968 AND 40869
判断字符串中含有中文:
SELECT * FROM tb WHERE PATINDEX('%[啊-座]%',FieldName)>0或: SELECT * FROM tb WHERE PATINDEX('%[吖-座]%',FieldName)>0
注意:N’%[吖-座]%’ 不适用于英文版或国外的SQLServer环境。 (<0 不含中文)
通用性最好的还是 UNICODE(字段) BETWEEN 19968 AND 40869 ,但不好做判断
-- 判断是否不含中文
IF( select top(1) PATINDEX(N'%[吖-座]%',Description) From ZZZ_Aegis_ADSN ) <=0select 1
else select 0
/* 判断是否包含中文,并把是否含中文作为条件来执行一些操作 */
IF( select top(1) PATINDEX('%[吖-座]%',ApplyName) From [B_00TEST] ) >0
select 1
else select 0--这个不能作为IF的条件,只能查询到具体信息
SELECT top(1) * FROM [B_00TEST] WHERE PATINDEX(N'%[吖-座]%',ApplyName) <=0IF( UNICODE(N'啊111') BETWEEN 19968 AND 40869 ) select 1 else select 0IF( UNICODE(N'Abc111') BETWEEN 19968 AND 40869 ) select 1 else select 0 --中文''前面要加N
通配符:[]
> FieldName like '[a-zA-Z]%' --------- ([]指定值的范围)
> FieldName like '[^F-M]%' --------- (^排除指定范围)
可参考文章:https://www.cnblogs.com/05-hust/p/15031795.html
SQL判断某列中是否包含中文字符、英文字符、纯数字,数据截取相关推荐
- SQL判断某列中是否包含中文字符或者英文字符
[sql] view plaincopy select * from 表名 where 某列 like '%[吖-座]%' select * from 表名 where 某列 like '%[a-z] ...
- go 验证字符串中是否包含中文或英文
Go 验证字符串中是否包含中文(推荐) _ [IIS7站长之家] golang判断字符是不是字母-Golang-PHP中文网 基础知识 - Golang 中的正则表达式 - GoLove - 博客园 ...
- Java判断一个字符串中是否包含中文字符工具类
Java判断一个字符串是否有中文一般情况是利用Unicode编码(CJK统一汉字的编码区间:0x4e00–0x9fbb)的正则来做判断,但是其实这个区间来判断中文不是非常精确,因为有些中文的标点符号比 ...
- cx+oracle+sql含中文,sql 判断字段值是是否包含中文字符
在itpub上看到了这个方法,我想修改一下,修改后如下 从表里提取汉字, 需要考虑字符集, 不同的字符集汉字的编码有所不同 这里以GB2312为例, 写一函数准确地从表里提取简体汉字. 假设数据库字符 ...
- pandas使用isna函数和any函数判断dataframe中的每一个数据列中是否包含缺失值
pandas使用isna函数和any函数判断dataframe中的每一个数据列中是否包含缺失值(check if column contains any missing values in dataf ...
- java判断字符串中是否包含中文 过滤中文
package com.test;import java.util.regex.Matcher; import java.util.regex.Pattern;public class Test {@ ...
- 判断字符串中是否包含中文
判断字符串中是否包含中文 select case when 'y我' like '%[啊-座]%' then '包含中文 ' else '不包含中文 ' end 转载于:https://www.cnb ...
- java 判断是否包含中文_java判断字符串中是否包含中文并过滤中文
java判断字符串中是否包含中文并过滤掉中文,具体内容如下 1.判断字符串中是否包含中文方法封装 /** * 判断字符串中是否包含中文 * @param str * 待校验字符串 * @return ...
- JAVA判断字符串中是否包含中文汉字
汉字的Unicode范围扩展了好多次了,网上的各种判断正则都是之前的,漏了很多 汉字 下面是最新的最全的判断正则 /*** 判断字符串中是否包含中文汉字** @param content* @retu ...
最新文章
- 如何使用Python创建自己的加密货币
- Mac系统安装Aircrack-ng破解wifi密码(2)
- php zval_copy_static_var(),深入理解 PHP7 中全新的 zval 容器和引用计数机制
- TypeScript 联合类型(union type)
- labview利用簇模拟汽车控制_在LabVIEW应用程序中何时应采用面向对象技术 (翻译)...
- quick-cocos2d-x for mac开发环境安装配置
- oracle rac war配置,Oracle RAC安装配置流程
- 3gpp协议_3GPP都在干什么(16)?:3GPP中网络切片原理及协议解读
- sublime3环境
- 电子相册系统(二)业务层设计
- ttf字体文件裁剪,字体文件压缩,字体文件提取
- 封装继承多态_继承重写重载
- 脉宽调制功能(PWM)
- excel中输入身份证号后三位变成0怎么办
- NOTION 换深色背景 黑色背景
- Java实现 LeetCode 383 赎金信
- 【转】ASC II 完整码表及简介
- java写一个文件浏览器_【Java】 实现一个简单文件浏览器(2)
- 阿里java开发规范学习笔记 (V1.5华山版)
- iOS 生成二维码 原生代码