在选定的 mysql 上连接数据和文本


Concatenating data and text on select mysql

Fellows,

我正在使用PHP和以下代码:

SELECT DATE_FORMAT(data,'%d/%m/%Y'' às ''%H:%i:%s') as data FROM infografico GROUP BY data

显示如下内容:

(última atualização: 22/09/2016' às '09:37:16)

问题是:'怎么可能不出现?

你只需要在开头和结尾有一个单引号

SELECT DATE_FORMAT(data,'%d/%m/%Y às %H:%i:%s'(

SELECT DATE_FORMAT(data,'%d/%m/%Y'' às ''%H:%i:%s') as data FROM infografico GROUP BY data
                        ^--start string
                                 ^^--escaped quote
                                       ^^--escaped quote
                                                 ^---end of string

字符串分隔符由 MySQL 解析掉,然后将''解析为'以用于输出目的,因为它们不是字符串分隔符 - 它们被视为文字引号字符。如果你想要更多的引号,你需要这个丑陋的结构:

DATE_FORMAT(data, '''%d etc... ''')

例如

mysql> select '''foo''bar''';
+-----------+
| 'foo'bar' |
+-----------+
| 'foo'bar' |
+-----------+
1 row in set (0.00 sec)

来自字符串文字(强调我的(:

有几种方法可以在字符串中包含引号字符:

    用">
  • '"引号引号的字符串中的"'"可以写为"''"。

  • 用">
  • ""引号引号的字符串中的"""可以写为""""。

  • 在引号字符前面加上转义字符 (" ' "(。

  • 用">
  • ""引用的字符串中的"'"不需要特殊处理,也不需要加倍或转义。同理,字符串内的""" 引用"'"不需要特殊处理。

但我怀疑你想使用这个其他语法:

彼此

相邻的带引号的字符串连接成单个 字符串。以下行是等效的:

'a string'
'a' ' ' 'string'

为此,您缺少空格:

mysql> SELECT '%d/%m/%Y'' às ''%H:%i:%s' as quotes, '%d/%m/%Y' ' às ' '%H:%i:%s' as no_quotes;
+------------------------+----------------------+
| quotes                 | no_quotes            |
+------------------------+----------------------+
| %d/%m/%Y' às '%H:%i:%s | %d/%m/%Y às %H:%i:%s |
+------------------------+----------------------+
1 row in set (0.00 sec)

当然,正如已经指出的,如果您不想,则实际上不需要手动插入引号。