1. 程式人生 > >mysql 字面值

mysql 字面值

arch 如何 sql ror 兩個 erro pan 例如 gb2

mysql 數據庫中實現了許多的數據類型、通常我們用的最多的是在建表的時候指定列的數據類型 如:brithday date default ‘2000-01-01‘

那麽我們如何給字面值(直接量)指定類型呢?

1、為字符指定它的類型

  格式:  _{字符集名}‘字符‘

  例如:  _gb2312‘蔣樂哥哥‘

2、為時間|日期指定它的類型

  格式:  {date | time | timestamp} ‘值‘ # 註意這個值要和前面的時間對的上、不然會報錯的。這裏沒有datetime 這個類型可用

  例子:  date ‘2017-03-17‘

3、十六進制的字面值

  格式:  X‘值‘  #註意這裏的值這的最小長度一定要是一個字節,也只能是整數個字節。如X‘F‘ 是不行的,它只有1/2個字節長。

  例子:  X‘a0‘

4、2進制的字面值

  格式:  b‘值‘

  例子:  b‘1010‘

5、bool類型的字面值

  格式:  TRUE  | FALSE  |true  |false

6、空值的字面值

  格式:  NULL

升華:

  在我們定義表的時候如果我們想要的是一個字符型的列,那麽我們定義成char / varchar 就行了。如果我們不定義那麽數據庫會給它分配一個

  默認的字符集、我這邊通常會設置默認字符集為utf8。在mysql比較兩個字符串是否相等時、事實上是在比較兩個串的字節序列。

select _gb2312蔣樂哥哥=_utf8蔣樂哥哥;
ERROR 
1267 (HY000): Illegal mix of collations (gb2312_chinese_ci,COERCIBLE) and (utf8_general_ci,COERCIBLE) for operation =

  前文說過字符只是一串字節序列、然而二進制類型、16進制類型是最天然的二進制序列的表達方式;那麽它們之間怎麽轉換呢?

  由‘a‘的字節序列直接轉換為字符

select _utf8 b01000001,_utf8 X41;
+-------------------+-------------+
| _utf8 b01000001 | _utf8 X41 |
+-------------------+-------------+
| A | A | +-------------------+-------------+

---

mysql 字面值