2012-06-19 23 views
2

我只是想知道是否有一個具體的Postgres列類型,正則表達式模式。也就是說,我想將模式存儲在列中,然後查詢與輸入字符串相匹配的模式。有沒有比製作TEXT列更好的方法?PostgreSQL的列方含正則表達式來匹配

回答

5

沒有,用於存儲正則表達式沒有具體列類型。

不幸的是,你將有實際運行,以找出是否這是一個匹配你的字符串字面每個正則表達式。

編輯 我認爲VARCHAR列將節省空間,但看完@ muistooshort的評論,並做了一些研究之後,似乎VARCHAR列不超過PostgreSQL的文本列抱多大的好處。我覺得這很有趣,有點奇怪。

+1

'varchar'實際上是PostgreSQL中的一個時代錯誤; 'varchar','char'和'text'在PostgreSQL裏幾乎是一樣的,所以你應該總是使用'text',除非你有特殊的理由來限制列的大小。 –

+0

@ muistooshort真的嗎? 分配空間沒有區別嗎? – Strae

+4

@Strae - 作爲[文檔](http://www.postgresql.org/docs/9.1/static/datatype-character.html)說:在短字符串(最多126個字節)_The存儲要求是1個字節加上實際的字符串,在字符的情況下包括空格填充。較長的字符串有4字節的開銷而不是1.長字符串被系統自動壓縮,因此磁盤上的物理需求可能會更少。非常長的值也存儲在後臺表,以便它們不會迅速獲得短列values._ – dezso