偶爾會發生用戶在文本列中錯誤地輸入具有尾部空格的文本,這很難在視覺上進行識別。如果此文本字段必須與不存在尾部空格的另一個文本字段進行匹配,這可能會稍後導致問題。是否有可能在mySQL強制執行文本字符串不能包含某個字符(在這種情況下,空間)?如何防止在mySQL中輸入包含空格的文本
感謝您的反饋!
偶爾會發生用戶在文本列中錯誤地輸入具有尾部空格的文本,這很難在視覺上進行識別。如果此文本字段必須與不存在尾部空格的另一個文本字段進行匹配,這可能會稍後導致問題。是否有可能在mySQL強制執行文本字符串不能包含某個字符(在這種情況下,空間)?如何防止在mySQL中輸入包含空格的文本
感謝您的反饋!
有許多的方式來實現你想要什麼:
檢查用戶輸入您的應用程序,如果它包含空格拒絕它。如果您的主要擔心是用戶輸入的質量,那麼這可能是實現這一目標的最佳方式。
您可以從應用程序邏輯或使用sql中的用戶輸入中刪除空格(或剛剛開始/結尾的空格)。
如果您選擇刪除sql中用戶輸入的所有空格,請使用replace() function。如果您只想刪除開始和結尾空格,請使用trim() function來獲得理想的結果。
在應用程序層執行此操作是執行此操作的最佳方法。在數據庫級別執行此操作會導致沮喪,尤其是在某些原因您需要*空間的情況下。 – tadman
下使用mysql函數的簡單方式是基於TRIM()
select
trim(' try with trim ')
, length (trim(' try with trim '))
, length (' try with trim ')
from dual ;
這不是MySQL的工作。你應該從一開始就插入「乾淨」的數據,這意味着在你的客戶端代碼中刪除空間,然後它可以在任何地方靠近mysql。 –
my-sql是一個rathr隨機混雜不同的技術...所以檢查確切的版本和引擎....有兩種SQL技術可以幫助:BEFORE-UPDATE-OR-INSERT TRIGGER可以透明地修復數據通過您的規則和CHECK CONSTRAINT可以阻止插入無效數據。如果你的數據庫支持任何這些 - 你可以使用它。我可以在Firebird SQL中編寫代碼,但不能在MYSQL中編寫代碼,所以不能作爲答案 –
Marc說什麼。 – Drew