我有一個表格,其中一個字段包含字符串302720"?
。解析帶有雙引號的字符串
當我嘗試做該字符串的子字符串時,它會返回一個錯誤。我知道這是因爲字符串中的雙引號。
我試圖用REGEXP_REPLACE
替換引號,即使這樣也行不通。
下面的SQL語句:
SELECT SUBSTR("302720"?", 0, 3)
對此有任何意見,將不勝感激。
我有一個表格,其中一個字段包含字符串302720"?
。解析帶有雙引號的字符串
當我嘗試做該字符串的子字符串時,它會返回一個錯誤。我知道這是因爲字符串中的雙引號。
我試圖用REGEXP_REPLACE
替換引號,即使這樣也行不通。
下面的SQL語句:
SELECT SUBSTR("302720"?", 0, 3)
對此有任何意見,將不勝感激。
請看下面的例子。你沒有列出DBMS,所以我假設SQL Server。
代碼
CREATE TABLE SUBSTR_TEST(STRING VARCHAR(50) NOT NULL)
INSERT INTO SUBSTR_TEST
VALUES('302720"?')
SELECT * FROM SUBSTR_TEST
SELECT SUBSTRING(REPLACE(STRING,'"',''),0,3) AS STRING FROM SUBSTR_TEST
結果
對不起,我正在使用IPython notebook。DebugData字段是一個包含302720的字符串?「。所以,當我把調試數據的子字符串,它什麼都不返回。 SELECT d.HardwareId,d.DebugReason,d.DebugData FROM (SELECT 硬件ID,DebugReason,DebugData, INTEGER(SUBSTR(DebugData,0,3))爲D1, FROM TABLE_DATE_RANGE(調試,TIMESTAMP(」 2016-05-16'),TIMESTAMP('2016-05-16')) WHERE DebugReason = 50013 and HardwareId = 550661626) – user3447653
@ user3447653你想在python中做一個子字符串嗎?或者在數據庫中?你使用哪個數據庫(PostGRESQL,SQL Server,MySQL)? – PyNoob
我的表格位於Google Big查詢中。所以使用IPython筆記本,我查詢它。 – user3447653
如果你的手這樣做,既可以使用不同的報價...
SELECT SUBSTR('302720"?', 0, 3)
或者你可以逃避報價。您可以通過報價翻倍做到這一點:
SELECT SUBSTR("302720""?", 0, 3)
或者你也可以使用傳統的\
轉義字符。
SELECT SUBSTR("302720\"?", 0, 3)
如果你在程序中這樣做,使用prepared statement與綁定參數。這避免了必須處理逃逸以及避免主機security problems。具體細節因語言而異,但通常是這樣的:
handle = connection.prepare("SELECT SUBSTR(?, ?, ?)");
handle.execute('302720"?', 0, 3)
result = handle.fetch
這與將變量傳遞到函數中類似。
所以你想在結果中返回雙引號還是你總想排除它? – PyNoob
哪個RDBMS(售貨員和版本)? – Shnugo
如果您使用單引號而不是雙引號,會出現什麼情況? 'SELECT SUBSTRING('302720'?',0,3)' –