一、包含中文字符

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类型。

sql 查询字段是中文/英文/数字 正则表达式的更多相关文章

  1. Mybatis按SQL查询字段的顺序返回查询结果

    在SpringMVC+Mybatis的开发过程中,可以通过指定resultType="hashmap"来获得查询结果,但其输出是没有顺序的.如果要按照SQL查询字段的顺序返回查询结 ...

  2. sql查询字段是否为空

    sql 查询某字段为空 select * from 表名 where 字段名 is null sql 查询某字段不为空 select * from 表名 where 字段名 is not null s ...

  3. sqlmap映射继承机制及映射字段顺序与SQL查询字段顺序无关

    <typeAlias alias="TblSpPartsinfo" type="com.bn.car.biz.supply.dao.po.PartsInfoPO&q ...

  4. Mybatis按照SQL查询字段的顺序返回查询结果,使用resultType="java.util.LinkedHashMap"

    在使用Mybatis开发时,Mybatis返回的结果集就是个map,当返回map时只需要做好SQL映射就好了,减少了代码量,简单便捷,缺点是不太方便维护,但是写大量的vo类去返回也挺累的,这个看你个人 ...

  5. SQL查询字段,起别名,列参与数学运算

    13.简单查询 13.1.查询一个字段? select 字段名 from 表名: 其中要注意: select和from都是关键字 字段名和表名都是标识符. 强调: 对于SQL语句说,是通用的 所有的S ...

  6. as3 区别中文 英文 数字

    1)英文a-z是65-90,A-Z是97-112 2)数字是0-9是,48-57 3)上万的都是中文字符 var str:String = "hello world! 你好世界! 88!&q ...

  7. Oracle查询字段内容为非数字的记录

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

  8. SQL 查询字段为值不为空

      方法一sql="select   *   from   table   where   id<>null   "     or   sql="select ...

  9. sql查询字段值只为汉字(桃)

    SELECT * FROM roster WHERE roster.`name` >'zzzzzzzzzz'   //查询roster表中name值为中文的 SELECT * FROM rost ...

随机推荐

  1. linux shell习题

    课件地址:https://wenku.baidu.com/view/bac2ff10f18583d0496459f3.html 1.测试环境变量:HOME,PWD,IFS等2.测试位置变量:$$,$# ...

  2. Python-OpenCV基本操作cv2

    1.图片加载.显示和保存 import cv2 # 生成图片 img = cv2.imread("1.jpg") # 生成灰色图片 imgGrey = cv2.imread(&qu ...

  3. redis3.0 主从

    redis3.0 主从 两个实例:6000为主,6001为从. 主实例配置如下: # replication repl-diskless-sync no repl-ping-slave-period ...

  4. gdb远程debug A syntax error in expression, near `variable)'.

    今天调试有个linux环境的应用时,gdb提示A syntax error in expression, near `variable)'.,最后经查,gdb版本过低(比如7.2)或者源代码不匹配所致 ...

  5. account_log,pay_log,user_account 三个表的用途与区别

    mysql> DESC zbphp.com_account_log; +--------------+-----------------------+------+-----+--------- ...

  6. Codeforces 825E Minimal Labels - 拓扑排序 - 贪心

    You are given a directed acyclic graph with n vertices and m edges. There are no self-loops or multi ...

  7. Python标准库inspect

    inspect模块用于收集python对象的信息,可以获取类或函数的参数的信息,源码,解析堆栈,对对象进行类型检查等等,有几个好用的方法: getargspec(func) 返回一个命名元组ArgSp ...

  8. USB通信基础知识

    1 USB系统组成 主机:提供USB接口和接口管理功能的硬件.软件.固件的复合体.PC机或OTG设备,一个USB系统只能有一个主机 设备:1.集线器HUB:扩展主机接口,设备可以通过其接入主机  2. ...

  9. django基础 -- 2. django初识

    一.模块渲染  jinja2 实现简单的字符串替换(动态页面) 1.下载 pip install jinja2 示例 : html文件中 <!DOCTYPE html> <html ...

  10. 《OFFER14》14_CuttingRope

      // 面试题14:剪绳子 // 题目:给你一根长度为n绳子,请把绳子剪成m段(m.n都是整数,n>1并且m≥1). // 每段的绳子的长度记为k[0].k[1].…….k[m].k[0]*k ...