@@ -92,52 +92,376 @@ SELECT CAST(name 'namefield' AS varchar) AS "varchar(name)";
92
92
--
93
93
-- test SQL92 string functions
94
94
--
95
- SELECT TRIM(BOTH FROM ' bunch o blanks ') AS "bunch o blanks";
95
+ SELECT TRIM(BOTH FROM ' bunch o blanks ')= 'bunch o blanks' AS "bunch o blanks";
96
96
bunch o blanks
97
97
----------------
98
- bunch o blanks
98
+ t
99
99
(1 row)
100
100
101
- SELECT TRIM(LEADING FROM ' bunch o blanks ') AS "bunch o blanks ";
101
+ SELECT TRIM(LEADING FROM ' bunch o blanks ')= 'bunch o blanks ' AS "bunch o blanks ";
102
102
bunch o blanks
103
103
------------------
104
- bunch o blanks
104
+ t
105
105
(1 row)
106
106
107
- SELECT TRIM(TRAILING FROM ' bunch o blanks ') AS " bunch o blanks";
107
+ SELECT TRIM(TRAILING FROM ' bunch o blanks ')= ' bunch o blanks' AS " bunch o blanks";
108
108
bunch o blanks
109
109
------------------
110
- bunch o blanks
110
+ t
111
111
(1 row)
112
112
113
- SELECT TRIM(BOTH 'x' FROM 'xxxxxsome Xsxxxxx') AS "some Xs";
113
+ SELECT TRIM(BOTH 'x' FROM 'xxxxxsome Xsxxxxx')= 'some Xs' AS "some Xs";
114
114
some Xs
115
115
---------
116
- some Xs
116
+ t
117
117
(1 row)
118
118
119
- SELECT SUBSTRING('1234567890' FROM 3) AS "34567890";
119
+ SELECT SUBSTRING('1234567890' FROM 3)= '34567890' AS "34567890";
120
120
34567890
121
121
----------
122
- 34567890
122
+ t
123
123
(1 row)
124
124
125
- SELECT SUBSTRING('1234567890' FROM 4 FOR 3) AS "456";
125
+ SELECT SUBSTRING('1234567890' FROM 4 FOR 3)= '456' AS "456";
126
126
456
127
127
-----
128
- 456
128
+ t
129
129
(1 row)
130
130
131
- SELECT POSITION('4' IN '1234567890') AS "4";
131
+ SELECT POSITION('4' IN '1234567890')= '4' AS "4";
132
132
4
133
133
---
134
- 4
134
+ t
135
135
(1 row)
136
136
137
- SELECT POSITION(5 IN '1234567890') AS "5";
137
+ SELECT POSITION(5 IN '1234567890')= '5' AS "5";
138
138
5
139
139
---
140
- 5
140
+ t
141
+ (1 row)
142
+
143
+ --
144
+ -- test LIKE
145
+ -- Be sure to form every test as a LIKE/NOT LIKE pair.
146
+ --
147
+ -- simplest examples
148
+ SELECT 'hawkeye' LIKE 'h%' AS "true";
149
+ true
150
+ ------
151
+ t
152
+ (1 row)
153
+
154
+ SELECT 'hawkeye' NOT LIKE 'h%' AS "false";
155
+ false
156
+ -------
157
+ f
158
+ (1 row)
159
+
160
+ SELECT 'hawkeye' LIKE 'H%' AS "false";
161
+ false
162
+ -------
163
+ f
164
+ (1 row)
165
+
166
+ SELECT 'hawkeye' NOT LIKE 'H%' AS "true";
167
+ true
168
+ ------
169
+ t
170
+ (1 row)
171
+
172
+ SELECT 'hawkeye' LIKE 'indio%' AS "false";
173
+ false
174
+ -------
175
+ f
176
+ (1 row)
177
+
178
+ SELECT 'hawkeye' NOT LIKE 'indio%' AS "true";
179
+ true
180
+ ------
181
+ t
182
+ (1 row)
183
+
184
+ SELECT 'hawkeye' LIKE 'h%eye' AS "true";
185
+ true
186
+ ------
187
+ t
188
+ (1 row)
189
+
190
+ SELECT 'hawkeye' NOT LIKE 'h%eye' AS "false";
191
+ false
192
+ -------
193
+ f
194
+ (1 row)
195
+
196
+ SELECT 'indio' LIKE '_ndio' AS "true";
197
+ true
198
+ ------
199
+ t
200
+ (1 row)
201
+
202
+ SELECT 'indio' NOT LIKE '_ndio' AS "false";
203
+ false
204
+ -------
205
+ f
206
+ (1 row)
207
+
208
+ SELECT 'indio' LIKE 'in__o' AS "true";
209
+ true
210
+ ------
211
+ t
212
+ (1 row)
213
+
214
+ SELECT 'indio' NOT LIKE 'in__o' AS "false";
215
+ false
216
+ -------
217
+ f
218
+ (1 row)
219
+
220
+ SELECT 'indio' LIKE 'in_o' AS "false";
221
+ false
222
+ -------
223
+ f
224
+ (1 row)
225
+
226
+ SELECT 'indio' NOT LIKE 'in_o' AS "true";
227
+ true
228
+ ------
229
+ t
230
+ (1 row)
231
+
232
+ -- unused escape character
233
+ SELECT 'hawkeye' LIKE 'h%' ESCAPE '#' AS "true";
234
+ true
235
+ ------
236
+ t
237
+ (1 row)
238
+
239
+ SELECT 'hawkeye' NOT LIKE 'h%' ESCAPE '#' AS "false";
240
+ false
241
+ -------
242
+ f
243
+ (1 row)
244
+
245
+ SELECT 'indio' LIKE 'ind_o' ESCAPE '$' AS "true";
246
+ true
247
+ ------
248
+ t
249
+ (1 row)
250
+
251
+ SELECT 'indio' NOT LIKE 'ind_o' ESCAPE '$' AS "false";
252
+ false
253
+ -------
254
+ f
255
+ (1 row)
256
+
257
+ -- escape character
258
+ SELECT 'h%' LIKE 'h#%' ESCAPE '#' AS "true";
259
+ true
260
+ ------
261
+ t
262
+ (1 row)
263
+
264
+ SELECT 'h%' NOT LIKE 'h#%' ESCAPE '#' AS "false";
265
+ false
266
+ -------
267
+ f
268
+ (1 row)
269
+
270
+ SELECT 'h%wkeye' LIKE 'h#%' ESCAPE '#' AS "false";
271
+ false
272
+ -------
273
+ f
274
+ (1 row)
275
+
276
+ SELECT 'h%wkeye' NOT LIKE 'h#%' ESCAPE '#' AS "true";
277
+ true
278
+ ------
279
+ t
280
+ (1 row)
281
+
282
+ SELECT 'h%wkeye' LIKE 'h#%%' ESCAPE '#' AS "true";
283
+ true
284
+ ------
285
+ t
286
+ (1 row)
287
+
288
+ SELECT 'h%wkeye' NOT LIKE 'h#%%' ESCAPE '#' AS "false";
289
+ false
290
+ -------
291
+ f
292
+ (1 row)
293
+
294
+ SELECT 'h%awkeye' LIKE 'h#%a%k%e' ESCAPE '#' AS "true";
295
+ true
296
+ ------
297
+ t
298
+ (1 row)
299
+
300
+ SELECT 'h%awkeye' NOT LIKE 'h#%a%k%e' ESCAPE '#' AS "false";
301
+ false
302
+ -------
303
+ f
304
+ (1 row)
305
+
306
+ SELECT 'indio' LIKE '_ndio' ESCAPE '$' AS "true";
307
+ true
308
+ ------
309
+ t
310
+ (1 row)
311
+
312
+ SELECT 'indio' NOT LIKE '_ndio' ESCAPE '$' AS "false";
313
+ false
314
+ -------
315
+ f
316
+ (1 row)
317
+
318
+ SELECT 'i_dio' LIKE 'i$_d_o' ESCAPE '$' AS "true";
319
+ true
320
+ ------
321
+ t
322
+ (1 row)
323
+
324
+ SELECT 'i_dio' NOT LIKE 'i$_d_o' ESCAPE '$' AS "false";
325
+ false
326
+ -------
327
+ f
328
+ (1 row)
329
+
330
+ SELECT 'i_dio' LIKE 'i$_nd_o' ESCAPE '$' AS "false";
331
+ false
332
+ -------
333
+ f
334
+ (1 row)
335
+
336
+ SELECT 'i_dio' NOT LIKE 'i$_nd_o' ESCAPE '$' AS "true";
337
+ true
338
+ ------
339
+ t
340
+ (1 row)
341
+
342
+ SELECT 'i_dio' LIKE 'i$_d%o' ESCAPE '$' AS "true";
343
+ true
344
+ ------
345
+ t
346
+ (1 row)
347
+
348
+ SELECT 'i_dio' NOT LIKE 'i$_d%o' ESCAPE '$' AS "false";
349
+ false
350
+ -------
351
+ f
352
+ (1 row)
353
+
354
+ -- escape character same as pattern character
355
+ SELECT 'maca' LIKE 'm%aca' ESCAPE '%' AS "true";
356
+ true
357
+ ------
358
+ t
359
+ (1 row)
360
+
361
+ SELECT 'maca' NOT LIKE 'm%aca' ESCAPE '%' AS "false";
362
+ false
363
+ -------
364
+ f
365
+ (1 row)
366
+
367
+ SELECT 'ma%a' LIKE 'm%a%%a' ESCAPE '%' AS "true";
368
+ true
369
+ ------
370
+ t
371
+ (1 row)
372
+
373
+ SELECT 'ma%a' NOT LIKE 'm%a%%a' ESCAPE '%' AS "false";
374
+ false
375
+ -------
376
+ f
377
+ (1 row)
378
+
379
+ SELECT 'bear' LIKE 'b_ear' ESCAPE '_' AS "true";
380
+ true
381
+ ------
382
+ t
383
+ (1 row)
384
+
385
+ SELECT 'bear' NOT LIKE 'b_ear' ESCAPE '_' AS "false";
386
+ false
387
+ -------
388
+ f
389
+ (1 row)
390
+
391
+ SELECT 'be_r' LIKE 'b_e__r' ESCAPE '_' AS "true";
392
+ true
393
+ ------
394
+ t
395
+ (1 row)
396
+
397
+ SELECT 'be_r' NOT LIKE 'b_e__r' ESCAPE '_' AS "false";
398
+ false
399
+ -------
400
+ f
401
+ (1 row)
402
+
403
+ SELECT 'be_r' LIKE '__e__r' ESCAPE '_' AS "false";
404
+ false
405
+ -------
406
+ f
407
+ (1 row)
408
+
409
+ SELECT 'be_r' NOT LIKE '__e__r' ESCAPE '_' AS "true";
410
+ true
411
+ ------
412
+ t
413
+ (1 row)
414
+
415
+ --
416
+ -- test ILIKE (case-insensitive LIKE)
417
+ -- Be sure to form every test as an ILIKE/NOT ILIKE pair.
418
+ --
419
+ SELECT 'hawkeye' ILIKE 'h%' AS "true";
420
+ true
421
+ ------
422
+ t
423
+ (1 row)
424
+
425
+ SELECT 'hawkeye' NOT ILIKE 'h%' AS "false";
426
+ false
427
+ -------
428
+ f
429
+ (1 row)
430
+
431
+ SELECT 'hawkeye' ILIKE 'H%' AS "true";
432
+ true
433
+ ------
434
+ t
435
+ (1 row)
436
+
437
+ SELECT 'hawkeye' NOT ILIKE 'H%' AS "false";
438
+ false
439
+ -------
440
+ f
441
+ (1 row)
442
+
443
+ SELECT 'hawkeye' ILIKE 'H%Eye' AS "true";
444
+ true
445
+ ------
446
+ f
447
+ (1 row)
448
+
449
+ SELECT 'hawkeye' NOT ILIKE 'H%Eye' AS "false";
450
+ false
451
+ -------
452
+ t
453
+ (1 row)
454
+
455
+ SELECT 'Hawkeye' ILIKE 'h%' AS "true";
456
+ true
457
+ ------
458
+ t
459
+ (1 row)
460
+
461
+ SELECT 'Hawkeye' NOT ILIKE 'h%' AS "false";
462
+ false
463
+ -------
464
+ f
141
465
(1 row)
142
466
143
467
--