2010-10-20 85 views

回答

0

沒有一個。

2

我可以理解不喜歡first_string || ' ' || second_string,但這是等價的。標準SQL(SQLite在這方面的說法)並不是世界上最漂亮的字符串操作語言。您可以嘗試將查詢結果返回到其他語言(例如,您似乎喜歡的Python)並在其中進行串聯;通常最好不要在數據庫層中進行「演示」(當然,使用串聯結果作爲搜索的對象並不是一個好主意;這使得不可能使用索引進行優化!)

0

我並不完全確定你在找什麼,但它可能是group_concataggregate function

+0

確實如此,但python字符串格式化比較靈活。無論如何,我會堅持更醜陋的方式。 – c00kiemonster 2010-10-20 12:46:54

0

你確定你不是在尋找參數替換嗎?

直接從sqlite3 module documentation

相反,使用DB-API的參數替換。放?作爲一個佔位符,無論你想使用一個值,然後提供一個值的元組作爲遊標的execute()方法的第二個參數。 (其他數據庫模塊,可以使用不同的佔位符,如%S或:1)

例如:

# Never do this -- insecure! 
symbol = 'IBM' 
c.execute("... where symbol = '%s'" % symbol) 

# Do this instead 
t = (symbol,) 
c.execute('select * from stocks where symbol=?', t) 

# Larger example 
for t in [('2006-03-28', 'BUY', 'IBM', 1000, 45.00), 
      ('2006-04-05', 'BUY', 'MSOFT', 1000, 72.00), 
      ('2006-04-06', 'SELL', 'IBM', 500, 53.00), 
     ]: 
    c.execute('insert into stocks values (?,?,?,?,?)', t) 
+0

不,我的意思是在常規查詢的'SELECT'部分執行操作。 (例如連接兩列值) – c00kiemonster 2010-10-20 12:45:41

+0

好吧,我只是想「以防萬一......」;-) – Steven 2010-10-20 14:12:33

2

注意,你可以創建自己的SQL級功能。例如,你可以有這樣的Python功能:

def format_data(one, two): 
    return "%s %s" % (one, two) 

使用pysqlite的create_function或APSW的createscalarfunction告訴SQLite的了。然後,你可以做查詢,像這樣:

SELECT format_data(col1, col2) FROM table WHERE condition; 
SELECT * from TABLE where col1 = format_data('prefix', col2); 

因此你可以把格式化邏輯在你舒適的可讀的Python代碼,同時保持SQL簡單而清楚地表明意圖。

相關問題