Oracle中串连接符||的使用心得(个人见解)
来源:互联网 发布:姚笛长相知乎 编辑:程序博客网 时间:2024/04/30 11:18
Oracle中可以用串连接符||将若干个串连在一起(Oracle中也可以使用concat函数,但是它只最多连接两个串。而MySQL中concat可以连接多个串。在SQL Server中则使用+进行串连接)。
当然,这两个串可以是列名或字面值。例如:
这样,查询出的结果就类似:“辽宁丹东”,将列或串连接起来中间是没有空格的。当然为了阅读起来更方便,可以利用逗号或空格将province和city列连接起来,形成类似“辽宁,丹东”的效果:
以上是比较正统的用法。
---------------------我是分割线----------------------------
下面是我发现的旁门左道。
最近写一个查询的时候,为了偷懒,想用一条语句来查询一个或多个列(当然,前提是这多个列的类型是一样的)中含有某一字符(即模糊查询)的记录。例如表T中有a、b、c、d四个列,想要将a、b、c中任意一个列或多个列中含有字符“x“的记录查出来,可以使用如下语句:
但个人感觉这种用法其实并不是太好,只是有时候可以偷偷懒^_^
||究竟是如何工作的不太理解,只有根据自己的实验得到一个猜想:
像上面那个例子,应该是吧a、b、c三列的值连在了一起,然后查找‘%x%’这样的字符。换句话来说,如果某一条记录中abc三列的值分别为”rs“、”tx“、”yz“连在一起是”rstxyz“,而你的查询条件是'%xy%'(想查a、b、c中一个列或多个列是否含有”xy“)。本来是没有的,但是像类似上面例子那样使用的话,就会查到有这样的记录。这点我是试过的,的确会出现这样的情况。
当然,上面的情况也可以避免,可以在连接符||中间加上一些分隔标志,这些分隔标志必须是列中不存在的,如”,“,即
同时,这种用法不适合条件是”=“的精确查询,因为a、b、c三列的值连在了一起会成为”rstxyz“,如果使用如下语句:
就相当于在”rstxyz“中查找(而不是在a、b、c的一个或多个列中查找)。这样,本来在a、b、c中一列或多列中没有含有”rstxyz“,但是用上面的语句却可以查询出记录。而如果使用这样的语句
按本意来说的话是应该查询到记录的,但是上面的语句却无法查询出来。
总之,这样的用法有偷工减料的嫌疑,还是少用为好。
- Oracle中串连接符||的使用心得(个人见解)
- Java中巧用字符串连接
- 软件架构的心得以及个人见解和方法
- 【开发手札】关于开发的一些个人心得见解
- 个人对listview中type的见解
- 《论Android的发展方向(个人见解)》
- 指针的个人见解(1)
- J2ME的个人见解
- UML的个人见解
- Http的个人见解
- GeoQuiz的个人见解
- JVM 的个人见解
- 反射的个人见解
- BeautifulSoup的个人见解
- 串连接
- Oracle中 ROWNUM 的使用心得
- netty的个人使用心得
- 使用Httpclient调用API的一些个人见解(返回的json)
- 真的好美
- 计算机网络知识体系
- SIP通过NAT的实例解析
- Linux 中文乱码
- PictureBox 的简单操作 (C# WinForm)
- Oracle中串连接符||的使用心得(个人见解)
- 指针的使用
- 私有云促进企业管理变革 助力企业快步前行
- Struts2 使用通配符定义action
- 和客户沟通
- 浅谈sql注入
- 迪米特法则
- Symbian 三版下做安装自启动和开机自启动
- How to compile Android 2.3 on Ubuntu 10.04 32bit