2015-10-08 22 views
4

我在Postgres中有一些大的varchar值,我想選擇並移動到別的地方。他們要使用的地方VARCHAR(4095)所以我只需要最多4095個字節(我認爲這是個字節),其中一些變量非常大,所以性能優化將選擇它們的截斷版本。從Postgres中選擇截斷的字符串

我該怎麼做?
喜歡的東西:

SELECT TRUNCATED(my_val, 4095) ... 

我不認爲這是一個字符長度,雖然,它需要一個字節長度?

回答

8

varchar(n)n字符(而不是字節)的數目。 The documentation:

SQL定義了兩種基本的字符類型:character varying(n)character(n),其中n是一個正整數。這兩種類型都可以 存儲字符串高達n字符(非字節)的長度。

大膽重視我的。

爲 「截斷」 的字符串將與left()最簡單的方法:

SELECT left(my_val, 4095) 

或者你可以只cast

SELECT my_val::varchar(4095) 

The manual once more:

如果明確地把一個值爲character varying(n)character(n),則超長值將被截斷爲n 字符而不會引發錯誤。 (這也是SQL標準所要求的。)