一、包含中文字符select * from 表名 where 列名 like '%[吖-座]%'二、包含英文字符select * from 表名 where 列名 like '%[a-z]%' 三、包含纯数字select * from 表名 where 列名 like '%[0-9]%'

 

上面的正则表达式,只能用like选出该字段中含有中文/英文/数字的人,那如果需求是选出姓名全部是中文的人,要如何做?

sqlserver中有函数len,以及datalength

可将字段名强制类型转换成为varchar类型,根据db中长度,赋予强制类型一定的长度,注意千万不要太小,导致删除了部分字符

英文 数字 符号  转为字符后,len和datalength长度一致

中文,len的2倍=datalength长度

MySQL:

char定义存储字符,实际存储也是按照字符形式存储,大小char(255个字符),注意不是字节。

在此说下字符与字节的区别?

字节是计算机中存储信息的单位,一个字节占八位,字符是A、B、C等以及一些符号,一般在计算机中用一个字节表示,也就是说一般占一个字节,但还有不一般,根据特定编码每个字符所占的字节数不同,就如在gbk,gb2312中一个汉字占两个字节,但国际通用编码格式utf-8中一个汉字占3个字节。

因此char在utf8编码下最多可存储255*3个字节的数据,无论是单独的一个汉字,还是英文字母都是一个字符,只是所占字节不同而已,Soga,char(255个字符),

不管是sqlserver还是MySQL存储,如果存储的字符没有255个会以英文空格字符的形式填满。这就是所谓的定长。

下面说说varchar(0-65532个字节)定义的是字符,但是实际以字节的形式进行存储,最多可以存储Max(65532)个字节,因此在utf8编码形式下最多存储65532/3-1个字符,在gbk编码下,最多存储65532/2-1,为什么会减一呢?因为MySQL的机制会留1-3个字节来存储该字符串的长度。多了这个用来记录长度的结果就可以做到动态变化,而不需要像char那样用空格填充剩余空间,减少内存消耗,但同样也增加了内耗,影响了性能。

举个例子:定义了name字段:varchar(60),为其填充数据张三,则只占用6个字节,剩余54个字节未被占用,上例如果定义name字段为char(60),同样填充数据张三的话,虽然也是占用6个字节,但剩余58个字符会用空格填充,实际占用60个字符所耗空间

sqlserver:

先说说nvarchar和varcahr的区别:

varchar:  可变长度,存储ANSI字符,根据数据长度自动变化。

nvarchar: 可变长度,存储Unicode字符,根据数据长度自动变化。

varchar[(n)]:长度为 n 个字节的可变长度且非 Unicode的字符数据。n 必须是一个介于 1 和 8,000之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节

nvarchar(n) :包含 n个字符的可变长度 Unicode 字符数据。n 的值必须介于1与4,000 之间。字节的存储大小是所输入字符个数的两倍。

   

从以上可以看出nvarchar是以字符方式存储, 因为用Unicode编码,这里大家可以看看这篇博客:各种编码的详解:http://blog.csdn.net/lvxiangan/article/details/8151670

因此可以说是规定nvarchar是双字节存储,不管你存储的是汉字还是英文字母都是占两个字节,

分析优缺点:

优点:判断字符串的时候可以不需要考虑中英文两种字符的差别,可以避免程序中乱码的问题。

缺点:存储英文字符会增大一倍的存储空间.但是在存储代价已经很低廉的情况下,优先考虑兼容性会给你带来更多好处的,效率没有varchar高。

char在此不做多解释与MySQL情况一致。

一般使用情况说明:

存储的数据长度确定如电话号码,编码等固定的,而且不包中文的,可以选择char类型。

存储的数据长度不确定,存储只有英文、数字的最好用varchar

存储的数据长度不确定,也有可能有中文,可以选择nvarchar类型。

转载于:https://www.cnblogs.com/qianjinyan/p/10302760.html

sql 查询字段是中文/英文/数字 正则表达式相关推荐

  1. sql查询字段中是否包含数字

    PATINDEX('%[0-9]%',Telephone)>0 转载于:https://www.cnblogs.com/nanapig77/archive/2012/06/08/2542043. ...

  2. Oracle查询字段以外的内容,Oracle查询字段内容为非数字的记录

    今天在一张3W多记录的表里查非数字的异常数据~数据库太水,记录一发,因为2.5使用人员误输入为2..5.... select t.routecardlist_id,trim(translate(RTR ...

  3. SQL 查询字段包含特殊符号的数据

    SQL 查询字段包含特殊符号的数据 SQL 查询字段中包含单引号 查询的时候输入两个单引号就转义了 ,chr(39) 表示单引号.chr(40)表示双引号 eg: select * from XX.T ...

  4. sql查询字段的值不为空

    sql查询字段的值不为空 SQRJS IS NOT NULL AND SQRJS <![CDATA[ <> ]]> ''

  5. sql查询字段重复的数据 并且修改数据某个字段

    1.sql查询字段重复的数据 并且修改所有行某个字段值 UPDATE 表名 a SET a.要修改的字段名 = 1 WHEREa.重复字段 IN (SELECTb.重复字段FROM(SELECTc.重 ...

  6. mysql 在sql查询语句结果中,数字加千分逗号

    mysql 在sql查询语句结果中,数字加千分逗号 FORMAT(X,D) 将number X设置为格式 '#,###,###.##', 以四舍五入的方式保留到小数点后D位, 而返回结果为一个字符串. ...

  7. SQL判断字段中是否存在数字、汉字、字母、英文

    --1.判断是否存在汉字 select * from 表名 where 列名 like '%[吖-座]%'--2.判断是否存在汉字以外的其他字符 select * from 表名 where 列名 l ...

  8. 利用VBA批量删除Excel中的中文/英文/数字或者替换中英文符号

    ↓↓↓欢迎关注我的公众号,在这里有数据相关技术经验的优质原创文章↓↓↓ 在Excel中经常会遇到去除所有的中文,英文或者数字等情况.但是由于Excel并不支持一次替换所有的中文,英文,数字等,所以有些 ...

  9. php判断账号英文,php 判断是否是中文/英文/数字示例代码

    $str='asb天水市12'; if (preg_match("/^[\x7f-\xff]+$/", $str)){ echo '全部是汉字'; }else { echo '不全 ...

  10. php 正则 中文英文,php 用户名正则表达式(中文,英文,数字,字母)

    由字母a-z(不区分大小写).数字0-9.减号或下划线组成,只能以数字或字母开头和结尾 用户名长度为4-18个字符:^[a-za-z0-9]{1}[a-za-z0-9|-|_]{2-16}[a-za- ...

最新文章

  1. php fastcgi配置_IIS7.5配置php(FastCGI)- 自动配置
  2. AI删库,程序员背锅?
  3. 我终于决定要放弃 okhttp、httpClient,选择了这个牛逼的神仙工具!贼爽
  4. 【Leetcode】组合、排列、子集、切割(回溯模板和去重方法)
  5. ASP.NET MVC3 技术(二) WebGrid 的使用方法
  6. windows改变php版本
  7. Linux系统中如何添加自己的库文件路径
  8. react jest测试_如何使用Jest和react-testing-library测试Socket.io-client应用程序
  9. ubantu中怎样安装VMware Tools
  10. [paper reading] Faster RCNN
  11. 人工智能时代都需要哪些数学知识?这些经典教材给你划重点
  12. 根据开始日期,结束日期,计算出日历上有几周的方法
  13. 【安全牛学习笔记】离线密码破解
  14. 地形地貌编辑软件world mechine介绍
  15. latex显示错误:Text line contains an invalid character. l.1
  16. java 变量 英文_Java中的字符类型变量无论是中文,英文还是数字,都是占4字节。...
  17. mysql日期vlog
  18. 加权平均资本成本【读书笔记】
  19. HTML+CSS+JS实现鼠标点击特效富强民主文明方法
  20. C语言中的static的作用~

热门文章

  1. axios.js post 后台木有数据
  2. 洛谷P1044 栈(Catalan数)
  3. 10074 启用开发者模式 for vs2015rc
  4. 带发送FIFO缓冲的RX232串口发送以及把众多文件变成“黑匣子”用于其它工程的调用...
  5. list转换为map
  6. iOS 代码命名规范 及Android 代码命名规范(1)iOS
  7. 牛客多校第三场J LRU management(双向链表)题解
  8. 理解MapReduce计算构架
  9. 手机号码校验、邮箱校验
  10. eclipse中的TODO和FIXME