公司開發產品須要支持oracle和mssql雙版數據庫,期間遇到mssql數據庫查詢text字段的問題。 sql
嘗試: 數據庫
1.使用'=' oracle
SELECT * FROM TEST_FLOW A WHERE A.TEST_JSON = '{states:{.....超過8000字符'; spa
報錯:數據類型 text 和 varchar(max) 在 equal to 運算符中不兼容。 開發
2.使用'LIKE' 字符串
SELECT * FROM TEST_FLOW A WHERE A.TEST_JSON LIKE '{states:{.....超過8000字符'; 產品
報錯:將截斷字符串或二進制數據。 數據類型
3.使用'SUBSTRING' 二進制
SELECT * FROM TEST_FLOW A WHERE SUBSTRING(A.TEST_JSON,1,DATALENGTH(A.FW_JSON)) = '{states:{.....超過8000字符'; 數據
正確!!
嘗試完畢。
結論:Text類型不支持'='、'<>'等比較,varchar最大8000字符,少於8000字符時,可用'LIKE'比較,
最妥是使用'SUBSTRING'比較。