string.td 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431
  1. # Copyright Materialize, Inc. and contributors. All rights reserved.
  2. #
  3. # Use of this software is governed by the Business Source License
  4. # included in the LICENSE file at the root of this repository.
  5. #
  6. # As of the Change Date specified in that file, in accordance with
  7. # the Business Source License, use of this software will be governed
  8. # by the Apache License, Version 2.0.
  9. #🔬 char
  10. > CREATE TABLE c1 (a char(1));
  11. > CREATE TABLE c2 (a char(2));
  12. > CREATE TABLE v (a varchar);
  13. > CREATE TABLE v1 (a varchar(1));
  14. > CREATE TABLE v2 (a varchar(2));
  15. > CREATE TABLE t (a text);
  16. #🔬🔬 literal to char
  17. #🔬🔬🔬 Explicit
  18. > SELECT 'abc'::char(1)
  19. a
  20. #🔬🔬🔬 Assignment
  21. > INSERT INTO c1 VALUES ('a')
  22. ! INSERT INTO c1 VALUES ('ab')
  23. contains:value too long for type character(1)
  24. > INSERT INTO c2 VALUES ('a')
  25. > INSERT INTO c2 VALUES ('ab')
  26. ! INSERT INTO c2 VALUES ('abc')
  27. contains:value too long for type character(2)
  28. #🔬🔬 char to char
  29. #🔬🔬🔬 Explicit
  30. > SELECT 'abc'::char(3)::char(1) AS c
  31. a
  32. > SELECT octet_length('abc'::char(3)::char(4)) AS c
  33. 4
  34. #🔬🔬🔬 Assignment
  35. ! INSERT INTO c1 VALUES ('ab'::char(2));
  36. contains:value too long for type character(1)
  37. > INSERT INTO c1 VALUES ('a '::char(3));
  38. > INSERT INTO c2 VALUES ('a'::char(1));
  39. > SELECT DISTINCT octet_length(a) FROM c1
  40. 1
  41. > SELECT DISTINCT octet_length(a) FROM c2
  42. 2
  43. #🔬🔬 char to varchar
  44. #🔬🔬🔬 Explicit
  45. > SELECT octet_length('a'::char(1)::varchar(2)) AS v
  46. 1
  47. > SELECT octet_length('ab'::char(2)::varchar) AS v
  48. 2
  49. > SELECT octet_length('ab'::char(2)::varchar(1)) AS v
  50. 1
  51. > SELECT octet_length('a '::char(3)::varchar(3)) AS v
  52. 1
  53. > SELECT pg_typeof('ab'::char(2)::varchar(1)) AS p
  54. "character varying"
  55. #🔬🔬🔬 Assignment
  56. > INSERT INTO v VALUES ('a'::char(1));
  57. > INSERT INTO v VALUES ('ab'::char(2));
  58. > INSERT INTO v VALUES ('abc'::char(3));
  59. > INSERT INTO v VALUES ('a '::char(3));
  60. > SELECT DISTINCT octet_length(a) AS l FROM v ORDER BY l
  61. l
  62. ---
  63. 1
  64. 2
  65. 3
  66. > INSERT INTO v1 VALUES ('a'::char(1));
  67. ! INSERT INTO v1 VALUES ('ab'::char(2));
  68. contains:value too long for type character varying(1)
  69. ! INSERT INTO v1 VALUES ('abc'::char(3));
  70. contains:value too long for type character varying(1)
  71. > INSERT INTO v1 VALUES ('a '::char(3));
  72. > SELECT octet_length(a) AS l FROM v1 ORDER BY l
  73. l
  74. ---
  75. 1
  76. 1
  77. > INSERT INTO v2 VALUES ('a'::char(1));
  78. > INSERT INTO v2 VALUES ('ab'::char(2));
  79. ! INSERT INTO v2 VALUES ('abc'::char(3));
  80. contains:value too long for type character varying(2)
  81. > INSERT INTO v2 VALUES ('a '::char(3));
  82. > SELECT octet_length(a) AS l FROM v2 ORDER BY l
  83. l
  84. ----
  85. 1
  86. 1
  87. 2
  88. #🔬🔬 char to text
  89. #🔬🔬🔬 Explicit
  90. > SELECT 'abc'::char(3)::text AS t
  91. t
  92. ---
  93. abc
  94. > SELECT octet_length('a '::char(3)::text) AS t
  95. t
  96. ---
  97. 1
  98. #🔬🔬🔬 Assignment
  99. > INSERT INTO t VALUES ('a '::char(3));
  100. > SELECT octet_length(a) AS l FROM t
  101. l
  102. ---
  103. 1
  104. #🔬 varchar
  105. > DROP TABLE c1;
  106. > DROP TABLE c2;
  107. > DROP TABLE v;
  108. > DROP TABLE v1;
  109. > DROP TABLE v2;
  110. > DROP TABLE t;
  111. > CREATE TABLE c1 (a char(1));
  112. > CREATE TABLE c2 (a char(2));
  113. > CREATE TABLE v (a varchar);
  114. > CREATE TABLE v1 (a varchar(1));
  115. > CREATE TABLE v2 (a varchar(2));
  116. > CREATE TABLE t (a text);
  117. #🔬🔬 literal to varchar
  118. #🔬🔬🔬 Explicit
  119. > SELECT 'abc'::varchar(1)
  120. a
  121. #🔬🔬🔬 Assignment
  122. > INSERT INTO v1 VALUES ('a');
  123. ! INSERT INTO v1 VALUES ('ab');
  124. contains:value too long for type character varying(1)
  125. > INSERT INTO v2 VALUES ('a');
  126. > INSERT INTO v2 VALUES ('ab');
  127. ! INSERT INTO v2 VALUES ('abc');
  128. contains:value too long for type character varying(2)
  129. > INSERT INTO v VALUES ('a'), ('ab'), ('abc');
  130. #🔬🔬 varchar to char
  131. #🔬🔬🔬 Explicit
  132. > SELECT 'abc'::varchar::char(1) AS c
  133. a
  134. > SELECT octet_length('abc'::varchar::char(4)) AS c
  135. 4
  136. #🔬🔬🔬 Assignment
  137. ! INSERT INTO v1 VALUES ('ab'::varchar);
  138. contains:value too long for type character varying(1)
  139. > INSERT INTO v1 VALUES ('a '::varchar);
  140. > INSERT INTO v2 VALUES ('a'::varchar);
  141. > INSERT INTO v2 VALUES ('ab'::varchar);
  142. > SELECT DISTINCT octet_length(a) AS l FROM v1 ORDER BY l
  143. l
  144. ----
  145. 1
  146. > SELECT DISTINCT octet_length(a) AS l FROM v2 ORDER BY l
  147. l
  148. ----
  149. 1
  150. 2
  151. #🔬🔬 varchar to varchar
  152. #🔬🔬🔬 Explicit
  153. > SELECT octet_length('a'::varchar(1)::varchar(2)) AS v
  154. 1
  155. > SELECT octet_length('ab'::varchar(2)::varchar(1)) AS v
  156. 1
  157. > SELECT octet_length('a '::varchar(3)::varchar(2)) AS v
  158. 2
  159. > SELECT pg_typeof('a'::varchar(1)::varchar(2)) AS p
  160. "character varying"
  161. #🔬🔬🔬 Assignment
  162. > INSERT INTO v VALUES ('a'::varchar(1));
  163. > INSERT INTO v VALUES ('ab'::varchar(2));
  164. > INSERT INTO v VALUES ('abc'::varchar(3));
  165. > INSERT INTO v VALUES ('a '::varchar(3));
  166. > SELECT DISTINCT octet_length(a) AS l FROM v ORDER BY l
  167. l
  168. ---
  169. 1
  170. 2
  171. 3
  172. > INSERT INTO v1 VALUES ('a'::varchar(1));
  173. ! INSERT INTO v1 VALUES ('ab'::varchar(2));
  174. contains:value too long for type character varying(1)
  175. ! INSERT INTO v1 VALUES ('abc'::varchar(3));
  176. contains:value too long for type character varying(1)
  177. > INSERT INTO v1 VALUES ('a '::varchar(3));
  178. > SELECT DISTINCT octet_length(a) AS l FROM v1 ORDER BY l
  179. l
  180. ---
  181. 1
  182. > INSERT INTO v2 VALUES ('a'::varchar(1));
  183. > INSERT INTO v2 VALUES ('ab'::varchar(2));
  184. ! INSERT INTO v2 VALUES ('abc'::varchar(3));
  185. contains:value too long for type character varying(2)
  186. > INSERT INTO v2 VALUES ('ab '::char(3));
  187. > SELECT DISTINCT octet_length(a) AS l FROM v2 ORDER BY l
  188. l
  189. ----
  190. 1
  191. 2
  192. #🔬🔬 varchar to text
  193. #🔬🔬🔬 Explicit
  194. > SELECT 'abc'::varchar(3)::text AS t
  195. t
  196. ---
  197. abc
  198. > SELECT octet_length('a '::varchar(3)::text) AS t
  199. t
  200. ---
  201. 3
  202. > SELECT pg_typeof('abc'::varchar(3)::text);
  203. text
  204. #🔬🔬🔬 Assignment
  205. > INSERT INTO t VALUES ('a '::varchar(3));
  206. > SELECT octet_length(a) AS l FROM t
  207. l
  208. ---
  209. 3
  210. #🔬 text
  211. > DROP TABLE c1;
  212. > DROP TABLE c2;
  213. > DROP TABLE v;
  214. > DROP TABLE v1;
  215. > DROP TABLE v2;
  216. > DROP TABLE t;
  217. > CREATE TABLE c1 (a char(1));
  218. > CREATE TABLE c2 (a char(2));
  219. > CREATE TABLE v (a varchar);
  220. > CREATE TABLE v1 (a varchar(1));
  221. > CREATE TABLE v2 (a varchar(2));
  222. > CREATE TABLE t (a text);
  223. #🔬🔬 literal to text
  224. #🔬🔬🔬 Explicit
  225. > SELECT 'abc'::text
  226. abc
  227. #🔬🔬🔬 Assignment
  228. > INSERT INTO v VALUES ('a'), ('ab'), ('abc');
  229. #🔬🔬 text to char
  230. #🔬🔬🔬 Explicit
  231. > SELECT 'abc'::text::char(1) AS c
  232. a
  233. > SELECT octet_length('abc'::text::char(4)) AS c
  234. 4
  235. #🔬🔬🔬 Assignment
  236. ! INSERT INTO c1 VALUES ('ab'::text);
  237. contains:value too long for type character(1)
  238. > INSERT INTO c1 VALUES ('a '::text);
  239. > INSERT INTO c2 VALUES ('a'::text);
  240. > SELECT DISTINCT octet_length(a) FROM c1
  241. 1
  242. > SELECT DISTINCT octet_length(a) FROM c2
  243. 2
  244. #🔬🔬 char to varchar
  245. #🔬🔬🔬 Explicit
  246. > SELECT octet_length('a'::text::varchar(2)) AS v
  247. 1
  248. > SELECT octet_length('ab'::text::varchar) AS v
  249. 2
  250. > SELECT octet_length('ab'::text::varchar(1)) AS v
  251. 1
  252. > SELECT octet_length('a '::text::varchar(3)) AS v
  253. 3
  254. > SELECT pg_typeof('ab'::text::varchar(1)) AS p
  255. "character varying"
  256. #🔬🔬🔬 Assignment
  257. > INSERT INTO v VALUES ('a'::text);
  258. > INSERT INTO v VALUES ('ab'::text);
  259. > INSERT INTO v VALUES ('abc'::text);
  260. > INSERT INTO v VALUES ('a '::text);
  261. > SELECT DISTINCT octet_length(a) AS l FROM v ORDER BY l
  262. l
  263. ---
  264. 1
  265. 2
  266. 3
  267. > INSERT INTO v1 VALUES ('a'::text);
  268. ! INSERT INTO v1 VALUES ('ab'::text);
  269. contains:value too long for type character varying(1)
  270. ! INSERT INTO v1 VALUES ('abc'::text);
  271. contains:value too long for type character varying(1)
  272. > INSERT INTO v1 VALUES ('a '::text);
  273. > SELECT DISTINCT octet_length(a) AS l FROM v1 ORDER BY l
  274. l
  275. ---
  276. 1
  277. > INSERT INTO v2 VALUES ('a'::text);
  278. > INSERT INTO v2 VALUES ('ab'::text);
  279. ! INSERT INTO v2 VALUES ('abc'::text);
  280. contains:value too long for type character varying(2)
  281. > INSERT INTO v2 VALUES ('a '::text);
  282. > SELECT DISTINCT octet_length(a) AS l FROM v2 ORDER BY l
  283. l
  284. ----
  285. 1
  286. 2
  287. #🔬🔬 char to text
  288. #🔬🔬🔬 Explicit
  289. > SELECT 'abc'::text::text AS t
  290. t
  291. ---
  292. abc
  293. > SELECT octet_length('a '::text) AS t
  294. t
  295. ---
  296. 3
  297. #🔬🔬🔬 Assignment
  298. > INSERT INTO t VALUES ('a'::text);
  299. > INSERT INTO t VALUES ('ab'::text);
  300. > INSERT INTO t VALUES ('a '::text);
  301. > SELECT DISTINCT octet_length(a) AS l FROM t ORDER BY l
  302. l
  303. ---
  304. 1
  305. 2
  306. 3