社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DATABASE

只有当值存在时,MySQL字符串串接

Dumb_Shock • 5 年前 • 502 次点击  

我有一张桌子

table1: ID, object1, object2, object3

我想连接 object1, object2 and object3 只有在所有对象中存在值时。

例如:

select ID, object1 +'\'+ Object2 +'\'+ object3 from table1

我希望只有当所有对象中都存在值时,此查询才为true。

当对象2和对象3中没有值时,上述查询的结果如下:

object1\\

但我希望输出仅为(当object2和object3中没有值时)

object1 (without back slashes)

当object2和object3中不存在值时,我希望避免由上述查询产生的场景。如何编写查询以根据可用性值动态连接?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/51424
 
502 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Schwern
Reply   •   1 楼
Schwern    6 年前

使用 concat_ws . 它将自动跳过空值。

mysql> select concat_ws('\\', 'foo', 'bar', null, 'baz');
+--------------------------------------------+
| concat_ws('\\', 'foo', 'bar', null, 'baz') |
+--------------------------------------------+
| foo\bar\baz                                |
+--------------------------------------------+

但是它不会跳过空白。

mysql> select concat_ws('\\', 'foo', 'bar', '', 'baz');
+------------------------------------------+
| concat_ws('\\', 'foo', 'bar', '', 'baz') |
+------------------------------------------+
| foo\bar\\baz                             |
+------------------------------------------+

好的模式不会处理空值和 '' 相同的。但有时你别无选择。在这种情况下使用 nullif 把空白变成空白。

mysql> set @var = '';
mysql> select concat_ws('\\', 'foo', 'bar', nullif(@var, ''), 'baz');
+--------------------------------------------------------+
| concat_ws('\\', 'foo', 'bar', nullif(@var, ''), 'baz') |
+--------------------------------------------------------+
| foo\bar\baz                                            |
+--------------------------------------------------------+

你可能想把这些都变成 stored procedure .