mirror of
https://git.postgresql.org/git/postgresql.git
synced 2026-02-16 11:26:59 +08:00
Useful for caseless matching. Similar to LOWER(), but avoids edge-case problems with using LOWER() for caseless matching. For collations that support it, CASEFOLD() handles characters with more than two case variations or multi-character case variations. Some characters may fold to uppercase. The results of case folding are also more stable across Unicode versions than LOWER() or UPPER(). Discussion: https://postgr.es/m/a1886ddfcd8f60cb3e905c93009b646b4cfb74c5.camel%40j-davis.com Reviewed-by: Ian Lawrence Barwick
36 lines
1.2 KiB
C
36 lines
1.2 KiB
C
/* -----------------------------------------------------------------------
|
|
* formatting.h
|
|
*
|
|
* src/include/utils/formatting.h
|
|
*
|
|
*
|
|
* Portions Copyright (c) 1999-2025, PostgreSQL Global Development Group
|
|
*
|
|
* The PostgreSQL routines for a DateTime/int/float/numeric formatting,
|
|
* inspired by the Oracle TO_CHAR() / TO_DATE() / TO_NUMBER() routines.
|
|
*
|
|
* Karel Zak
|
|
*
|
|
* -----------------------------------------------------------------------
|
|
*/
|
|
|
|
#ifndef _FORMATTING_H_
|
|
#define _FORMATTING_H_
|
|
|
|
|
|
extern char *str_tolower(const char *buff, size_t nbytes, Oid collid);
|
|
extern char *str_toupper(const char *buff, size_t nbytes, Oid collid);
|
|
extern char *str_initcap(const char *buff, size_t nbytes, Oid collid);
|
|
extern char *str_casefold(const char *buff, size_t nbytes, Oid collid);
|
|
|
|
extern char *asc_tolower(const char *buff, size_t nbytes);
|
|
extern char *asc_toupper(const char *buff, size_t nbytes);
|
|
extern char *asc_initcap(const char *buff, size_t nbytes);
|
|
|
|
extern Datum parse_datetime(text *date_txt, text *fmt, Oid collid, bool strict,
|
|
Oid *typid, int32 *typmod, int *tz,
|
|
struct Node *escontext);
|
|
extern bool datetime_format_has_tz(const char *fmt_str);
|
|
|
|
#endif
|