[英]How to get the string-type content of the XML element (SimpleXMLElement), that is parsed by PHP simplexml_load_string?
[英]PHP Mysqli query comparing string-type number field to an integer
我有一個數據庫,其中一個字段用於bathrooms
,用戶通常輸入1
或3
或有時輸入1.1
,這意味着1個完整洗手間和1個半洗手間,因此我無法將該字段存儲為數字,整數或雙精度數或十進制數。 我不得不將它們存儲為文本。
我的問題是,如果我只想提取那些洗手間大於3的記錄,該如何處理? 我正在尋找類似的東西:
SELECT * FROM agentdb WHERE converttointeger(bathrooms) => 3
顯然converttointeger
是無效的,但是有辦法實現嗎? 我嘗試搜索和谷歌搜索,但是我一直得到錯誤的結果或錯誤的主題。
不要使用轉換為整數的文本。 將值存儲為帶有小數部分的數字,例如decimal
。 然后,您可以使用>
比較,而無需強制轉換。
我將使用DECIMAL(2,1)
,表示2位數字,其中包括1個十進制數字。 “ 1.1”將另存為1.1
而不是1.10
替代方案:您還可以有兩個表字段: full_baths
和half_baths
,每個類型為tinyint
或smallint
。 當您的用戶輸入“ 1.1”時,只需將其拆分即可存儲
$baths = $_POST['bathrooms'];// eg: "2.1"
$baths_arr = explode(".",$baths); // eg: [2,1]
$full = $half = 0; //full baths, half baths
if(!empty($baths_arr)):
$full = (int)$baths_arr[0]; //we explicitly convert to integer
$half = empty($baths_arr[1])? 0: (int)$baths_arr[1];
endif;
然后,您可以在各自的列中保存$full
和$half
這應該起作用:SELECT * FROM agentdb WHERE CAST(浴室已簽名)> = 3
我從這里得到了答案: 從VARCHAR轉換為INT-MySQL
將它們存儲為浮點數,以便您可以保留小數,但將其保留為數字。
“浴室”數據= {1,3,{3 <int}}
您只需要3或3個整數即可。 相反地想! 您不需要“ 1”數據。 所以...
SELECT * FROM agentdb WHERE bathrooms <> '1'
並且,Casted columnn不是工作索引。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.