首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 文字、日期與集合類型深度解析:TEXT、DATE、SET

     編輯:MySQL 資料庫相關知識

MySQL 特殊資料類型詳解:TEXT、DATE、SET 與通配符

MySQL 提供約 25 種資料類型,大多直觀易懂。但 TEXT、DATE、SET 等類型存在常見誤區,通配符用法也有講究,本文逐一釐清。

TEXT:不是獨立類型,而是別名

關鍵結論: TEXT 不是獨立資料類型,實際上是 LONG VARCHAR 或 MEDIUMTEXT 的同義詞。建表時建議顯式指定具體類型(TINYTEXT/TEXT/MEDIUMTEXT/LONGTEXT),避免歧義。

DATE 日期類型:格式與運算

特性說明範例
標準格式YYYY-MM-DD1999-12-08
PHP 獲取當前日期date("Y-m-d")返回字串格式
日期減法直接相減得天數差$age = $current_date - $birthdate

注意:日期減法返回整數天數,不適用於精確時間差計算,需用 DATEDIFF() 或 TIMESTAMPDIFF() 函數。

SET 集合類型:多值儲存的利器

特性SETENUM
值的數量可儲存多個預定值(最多 64 個)單一值(最多 65,535 個預定義)
儲存方式位圖(bitmap)索引值
查詢函數FIND_IN_SET()直接比較

突破 64 個限制: 定義多個 SET 欄位組合使用,或改用 JSON 類型(MySQL 5.7+)、關聯表設計。

SQL 通配符完整對照

通配符用途搭配關鍵字範例
*匹配欄位名(選取所有欄位)SELECTSELECT * FROM table
%匹配欄位值(任意長度字串)LIKEWHERE name LIKE 'A%'
_匹配單個字符LIKEWHERE code LIKE 'A_C'

關鍵差異總結

  • * 用於 SELECT 列表,代表「所有欄位」
  • % 和 _ 用於 WHERE ... LIKE 條件,代表「值的模糊匹配」
  • % 必須搭配 LIKE 使用,單獨使用無效
  • NULL 值在 DISTINCT 去重時視為相等

實務建議

  • 日期運算優先使用內建函數(DATEDIFF、DATE_ADD 等)
  • SET 類型適合固定枚舉且需多選的場景(如標籤、權限位)
  • 大量模糊查詢考慮全文索引或搜尋引擎
  • 避免在 WHERE 條件中對索引欄位使用函數或導致隱式轉換
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved