mysql 字面值
阿新 • • 發佈:2017-05-21
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‘蔣樂哥哥‘; ERROR1267 (HY000): Illegal mix of collations (gb2312_chinese_ci,COERCIBLE) and (utf8_general_ci,COERCIBLE) for operation ‘=‘
前文說過字符只是一串字節序列、然而二進制類型、16進制類型是最天然的二進制序列的表達方式;那麽它們之間怎麽轉換呢?
由‘a‘的字節序列直接轉換為字符
select _utf8 b‘01000001‘,_utf8 X‘41‘; +-------------------+-------------+ | _utf8 b‘01000001‘ | _utf8 X‘41‘ | +-------------------+-------------+| A | A | +-------------------+-------------+
---
mysql 字面值