Tại sao không sử dụng vùng chứa không quan tâm độ dài là gì - ví dụ: std::string
? Bây giờ, nó như vậy xảy ra rằng tôi đã làm việc gần đây với db TZ như được cung cấp ở định dạng csv phổ biến (ví dụ ở đây in a file from CERN) nhưng định dạng tương tự cũng được sử dụng trong các nguồn Tăng cường.
Với dữ liệu đó, tôi nhìn thấy một chiều dài tối đa 28:
R> library(RcppBDT) # R package interfacing Boost Date_Time
Loading required package: Rcpp
R> tz <- new(bdtTz, "America/Chicago") # init. an object, using my default TZ
R> tznames <- tz$getAllRegions() # retrieve list of all TZ names
R>
R> length(tznames) # total number of TZ identifiers
[1] 381
R>
R> head(tznames) # look at first six
[1] "Africa/Abidjan" "Africa/Accra" "Africa/Addis_Ababa"
[4] "Africa/Algiers" "Africa/Asmera" "Africa/Bamako"
R>
R> summary(sapply(tznames, nchar)) # numerical summary of length of each
Min. 1st Qu. Median Mean 3rd Qu. Max.
9 13 15 15 17 28
R>
R> tznames[ nchar(tznames) >= 26 ] # looking at length 26 and above
[1] "America/Indiana/Indianapolis" "America/Kentucky/Louisville"
[3] "America/Kentucky/Monticello" "America/North_Dakota/Center"
R>
Chúng tôi cũng có thể nhìn vào một biểu đồ:
R> library(MASS)
R> truehist(sapply(tznames, nchar),
+ main="Distribution of TZ identifier length", col="darkgrey")
R>

này sử dụng mã mà tôi có trong gói RcppBDT của tôi là SVN repo on R-Forge nhưng chưa nằm trong gói CRAN version của gói.
Nguồn
2012-09-22 18:01:29
Câu trả lời tuyệt vời! Trên thực tế, tôi không thể sử dụng chuỗi độ dài biến vì tôi muốn lưu trữ các chuỗi đó trong cơ sở dữ liệu. Lúc đầu, tôi không muốn sử dụng một trường char tùy ý, nhưng tôi nghĩ rằng tôi được đặt trên một chuỗi dài 40 ký tự [1]. Tôi sẽ đặt chúng trong một bảng riêng biệt và tham khảo chúng bằng cách sử dụng các phím nước ngoài. 1: Có múi giờ ("America/Argentina/ComodRivadavia") thực sự dài 32-char. Trong tương lai có thể có những cái tên dài khác. – sleblanc
Bạn không thể sử dụng varchar trong SQL? –
Không varchars thực sự đòi hỏi một chiều dài quy định? – sleblanc