1. 程式人生 > >MYSQL中小於號報錯,以及between and 無法使用

MYSQL中小於號報錯,以及between and 無法使用

之前一直用的oracle,今天開始用mySql,發現在寫sql時,由於寫了子查詢  0 < (select count(*) from A where A.del='0' and A.xxx='xxx')時,sql報錯缺少表示式和識別符號號啥的,最終發現是 在xml時,有時相關符號變成綠色啥的,是需要轉義的寫法的,eg:< 對應 &lt; 注:在XML中<號,& 是非法的,要轉義。當然其他符號也儘量轉義

其次之前用Oracle 時,一直用between and 比較日期是否在某個時間範圍內,eg:

<if test="cykssj!=null and cyjssj != null">
AND A.cysj BETWEEN to_date(#{cykssj},'yyyy-mm-dd') AND to_date(#{cyjssj},'yyyy-mm-dd')

</if>

還有一種to_char的用法,在mysql中莫名的報錯,報to_date或者to_char不存在,用<=    >=同樣不管用。

後來嘗試了多種辦法,最終用了一個<![CDATA[  xxxxxxxxxxxxxxxxxxx ]]>

術語 CDATA 指的是不應由 XML 解析器進行解析的文字資料(Unparsed Character Data)。

在 XML 元素中,"<" 和 "&" 是非法的。

"<" 會產生錯誤,因為解析器會把該字元解釋為新元素的開始。

"&" 也會產生錯誤,因為解析器會把該字元解釋為字元實體的開始。

某些文字,比如 JavaScript 程式碼,包含大量 "<" 或 "&" 字元。為了避免錯誤,可以將指令碼程式碼定義為 CDATA。

CDATA 部分中的所有內容都會被解析器忽略。

CDATA 部分由 "<![CDATA[" 開始,由 "]]>" 結束:

關於 CDATA 部分的註釋:

CDATA 部分不能包含字串 "]]>"。也不允許巢狀的 CDATA 部分。

標記 CDATA 部分結尾的 "]]>" 不能包含空格或折行。