2014-02-26 91 views
0

我有一個帶有三個字段的表(ID , machine_name, carpark_id)其中兩個機器名有(311A__) _ =spaces and (311B__)如何選擇和插入行中有空格的機器名。刪除sql字段中的空格

sql_local = """SELECT id FROM customer_1.pay_machines WHERE machine_name="%s" """ % machine 

    sql_local = """INSERT INTO customer_1.pay_machines (machine_name, carpark_id) VALUES ("%s", 0)""" % machine 

    sql_local = """SELECT id FROM customer_1.pay_machines WHERE machine_name="%s" """ % machine 

    sql_local = """INSERT INTO customer_1.pay_and_display (plate, machine_id, ticket_datetime, expiry_datetime, ticket_name, ticket_price) VALUES ("%s", "%s", "%s", "%s", "%s", "%s") """ % (plate, machineId, entryDatetime, expiryDatetime, ticketName, ticketPrice) 
+0

如果你在你的字符串周圍加上引號,如果有空格就沒有關係。 –

+0

你說過:「選擇行並將其插入機器名稱中,其中有空格。」。您沒有說明問題在於MySQL在字符串的結尾處進行了修剪。你應該很好地重新表達你的問題。 –

+0

啊,是的,我錯過了他們尾隨空格的事實.. –

回答

-1

有空間的過濾機器:機器如'%%';

插入:什麼問題?只需將名稱與單引號之間的空格相加即可。

我注意到你使用的是雙引號而不是單引號,這是MySQL中通常的字符串分隔符。

+0

如果您輸入或不輸入,則MySQL會自動修剪放入CHAR或VARCHAR字段的每個字符串。 – Mazzy

+0

您聲明:「選擇並插入機器名稱中有空格的行。」。您沒有說明問題在於MySQL在字符串的結尾處進行了修剪。你應該很好地重新表達你的問題。 –

1

我知道你有什麼問題!

MySQL總是自動修剪你的字符串,所以插入'a'實際上只是'a'。

https://dev.mysql.com/doc/refman/5.0/en/char.html

「對於VARCHAR列,在過量列長度的尾部空格插入之前被截斷,併產生一個警告,而不管所使用的SQL模式的。對於CHAR列,過量尾部空格的截斷從插入的值執行靜默無論SQL模式。「

您可以嘗試使用一個blob,這將不會忽略空格

如果你想繼續使用CHAR或VARCHAR字段,你可以使用LIKE 'String '包括空格,WHERE col = 'String '行不通