关于通配符'_'不能起占位的作用
来源:互联网 发布:妇科看病流程 知乎 编辑:程序博客网 时间:2024/06/10 02:00
我在做数据库时碰到一个记录手机号的列,想试试用check约束。于是就用like做字符串比较,作为check约束的逻辑表达式。如下:
alter table table1
add mobilePhoneNum char(14)
go
alter table table1
add
constraint chk_mobilePhoneNum check (mobilePhoneNum like '130________' or mobilePhoneNum like '131________')
go
运行以上查询之后输入数据
insert into table1(mobilePhoneNum) values('13012345678')--插入成功--
insert into table1(mobilePhoneNum) values('1301234567')--插入成功--
insert into table1(mobilePhoneNum) values('13012345')--插入成功--
insert into table1(mobilePhoneNum) values('130123456781')--插入失败--
我就觉得疑惑。书上说通配符'_'表示任何单个字符。还有个例子:
LIKE '_en' 表示每个以字母en结尾,包含3个字母的名称
尝试了一下,书上是对的!难道通配符'_'放到字母前面能起到占位的作用,放到后面就只能起定义字符串最大长度的作用吗?这个似乎与通配符'_'的定义:表示任何单个字符的定义冲突!
后来又做了几个测试,发现真的如此。
LIKE '__AA' 表示以'AA'结尾,包含4个字符
LIKE 'AA__' 表示以'AA'开头,并且2<=字符串长度<=4
这些是在SQL Server 2000中测试的,总感觉不怎么符合常理,不知道是不是另有原因,或者本来就是这样理解,或者只有SQL Server 2000中如此。
我做这些测试之前认为类似'_'的通配符应该放到哪都表示任何单个字符,能起到占位的作用,做测试后发现放到字符串最后面起不到占位的作用就感觉别扭,希望各位高手开导和指教!
- 关于通配符'_'不能起占位的作用
- sql占位符的作用
- Linux中通配符的作用
- 句柄继承权起的作用?
- MMU所起的作用
- “_”通配符
- 关于System.Data.ParameterDirection四个枚举类型所起的作用
- 关于editText和scrollView起冲突,editText内容超过编剧不能滑动的问题
- SQL中 % ,_,【】,【^】通配符的的使用
- Struts2_0600_ActionWildcard 关于通配符的使用
- 关于Struts2通配符的问题
- 关于struts2通配符的使用
- 关于struts2的通配符问题
- mysql关于通配符%%的优化
- sql里的通配符过滤 '_' '%' '[]'
- java 的接口到底起什么作用
- java 的接口到底起什么作用
- java 的接口到底起什么作用
- 右边悬浮广告--随滚动条移动--简单实用
- 周立功:其实做什么产品都赚钱,关键看您做得怎么样
- 第十五天,我没有写当日总结
- C++ Escape Sequences - C++换码顺序 - C++ 转义字符 参考 - VS6 - HackerJLY
- 清明节,苦学流程引擎
- 关于通配符'_'不能起占位的作用
- 数据库操作的一般类:DB.Manager
- std::vector介绍
- String.split()用法的一点经验
- smtp协议中文版(最后带例子)
- 纳秒级的计时精度
- 循环图片的代码,做个记号。
- 怀念我的外公
- 暴笑~~历史上还真有秀字营这样的部队~