房產(chǎn)備案登記信息查詢優(yōu)化大師網(wǎng)頁版
背景
最近開發(fā)的時候,有一個需求的查詢需要支持范圍查詢[a,b),并且查詢的結果要求查詢的范圍含頭端點不含尾端點。因為between…and…查詢的范圍是含頭含尾的,因而不能使用。
因此打算直接使用>=和<來比較實現(xiàn),使用>=的時候沒有什么問題,結果在使用<的時候發(fā)現(xiàn)IDEA在報錯。
查了一下發(fā)現(xiàn)是XML文件沒法區(qū)分<是小于號還是一個標簽的開始。
解決方案
以在用戶表查詢用戶年齡范圍為例子。
方案一
這種語法沖突的,一般情況下都可以利用轉(zhuǎn)義字符來實現(xiàn),這里也有類似的用法。
轉(zhuǎn)移字符 | 實際含義 |
---|---|
< | < |
> | > |
可以寫作如下:
SELECT * FROM user WHEREage >= a AND age < b
方案二
當然還可以使用 <![CDATA[ SQL語句 ]]>語法來實現(xiàn),在CDATA標簽中間的SQL會被單純當成SQL
例子:
<![CDATA[ SELECT * FROM user WHERE age >= a AND age < b ]]>
方案三
可以繼續(xù)使用between a and b,不過需要加多一個條件,xxx != b
例子:
SELECT * FROM user WHERE age BETWEEN a AND b AND age != b
方案四
可以把需要用到<的地方都轉(zhuǎn)換成使用>
例子:
SELECT * FROM user WHERE age >= a AND b > age