SQL |带有示例的字符函数
字符函数接受字符输入并且可以返回字符或数值作为输出。 SQL 提供了许多不同的字符数据类型,包括 - CHAR、VARCHAR、VARCHAR2、LONG、RAW 和 LONG RAW。各种数据类型分为三种不同的数据类型:
- VARCHAR2 – 一种可变长度字符数据类型,其数据由 RDBMS 转换。
- CHAR – 固定长度数据类型。
- RAW – 一种可变长度数据类型,其数据不被 RDBMS 转换,而是以“原始”形式保留。
注意:当字符函数返回字符值时,该值始终为 VARCHAR2(可变长度)类型,但以下两个例外:UPPER 和 LOWER。这些函数分别转换为大写和小写,如果调用它们转换的字符串是固定长度的CHAR 参数,则返回 CHAR 值(固定长度)。
字符函数
SQL 提供了一组丰富的字符函数,允许您获取有关字符串的信息并以多种方式修改这些字符串的内容。字符函数有以下两种类型:
1. 大小写操作函数(LOWER、UPPER 和 INITCAP)
2. 字符操作函数(CONCAT、LENGTH、SUBSTR、INSTR、LPAD、RPAD、TRIM 和 REPLACE)
案例操作函数
- LOWER :此函数将字母字符值转换为小写。如果传入的字符串是固定长度的,LOWER 实际上会返回一个固定长度的字符串。 LOWER 不会更改字符串中不是字母的任何字符,因为大小写与数字和特殊字符无关,例如美元符号 ($) 或模数 (%)。
句法:LOWER(SQL course)
Input1: SELECT LOWER('GEEKSFORGEEKS') FROM DUAL; Output1: geeksforgeeks Input2: SELECT LOWER('DATABASE@456') FROM DUAL; Output2: database@456
- UPPER :此函数将字母字符值转换为大写。如果传入的字符串是固定长度的,那么 UPPER函数也将实际返回一个固定长度的字符串。 UPPER 不会更改字符串中非字母的任何字符,因为大小写与数字和特殊字符(例如美元符号 ($) 或模数 (%))无关。
句法:UPPER(SQL course)
Input1: SELECT UPPER('geeksforgeeks') FROM DUAL; Output1: GEEKSFORGEEKS Input2: SELECT UPPER('dbms$508%7') FROM DUAL; Output2: DBMS$508%7
- INITCAP :此函数将每个单词的第一个字母的字母字符值转换为大写字母,而其他所有字母的值都转换为小写字母。字符串中的单词必须用# 或_ 或空格分隔。
句法:INITCAP(SQL course)
Input1: SELECT INITCAP('geeksforgeeks is a computer science portal for geeks') FROM DUAL; Output1: Geeksforgeeks Is A Computer Science Portal For Geeks Input2: SELECT INITCAP('PRACTICE_CODING_FOR_EFFICIENCY') FROM DUAL; Output2: Practice_Coding_For_Efficiency
字符操作函数
- CONCAT:此函数始终将 string2 附加(连接)到 string1 的末尾。如果任一字符串为 NULL,则 CONCAT函数返回非 NULL 参数。如果两个字符串都为 NULL,则 CONCAT 返回 NULL。
句法:CONCAT('String1', 'String2')
Input1: SELECT CONCAT('computer' ,'science') FROM DUAL; Output1: computerscience Input2: SELECT CONCAT( NULL ,'Android') FROM DUAL; Output2: Android Input3: SELECT CONCAT( NULL ,NULL ) FROM DUAL; Output3: -
- LENGTH:此函数返回输入字符串的长度。如果输入字符串为 NULL,则 LENGTH函数返回 NULL 而不是零。此外,如果输入字符串的开头、中间或字符串包含额外的空格,则 LENGTH函数也包含额外的空格并返回字符串的完整长度。
句法:LENGTH(Column|Expression)
Input1: SELECT LENGTH('Learning Is Fun') FROM DUAL; Output1: 15 Input2: SELECT LENGTH(' Write an Interview Experience ') FROM DUAL; Output2: 34 Input3: SELECT LENGTH('') FROM DUAL; or SELECT LENGTH( NULL ) FROM DUAL; Output3: -
- SUBSTR :此函数返回从给定起点到终点的字符串的一部分。如果未给出子字符串长度,则 SUBSTR 返回字符串末尾的所有字符(从指定的起始位置开始)。
句法:SUBSTR('String',start-index,length_of_extracted_string)
Input1: SELECT SUBSTR('Database Management System', 9) FROM DUAL; Output1: Management System Input2: SELECT SUBSTR('Database Management System', 9, 7) FROM DUAL; Output2: Manage
- INSTR:此函数返回给定字符串中字符或字符串的数字位置。或者,您可以提供一个位置m开始搜索,以及字符串的出现n 。此外,如果没有给出起始位置,则默认从索引 1 开始搜索。如果在字符串中搜索后没有找到匹配项,则 INSTR函数返回 0。
Syntax: INSTR(Column|Expression, 'String', [,m], [n])
Input: SELECT INSTR('Google apps are great applications','app',1,2) FROM DUAL; Output: 23
- LPAD 和 RPAD:这些函数返回向左或向右填充的字符串(根据用途);因此“LPAD”中的“L”和“RPAD”中的“R”;到指定的长度,并带有指定的填充字符串。如果未指定填充字符串,则给定字符串在左侧或右侧(根据使用)用空格填充。
句法:LPAD(Column|Expression, n, 'String') Syntax: RPAD(Column|Expression, n, 'String')
LPAD Input1: SELECT LPAD('100',5,'*') FROM DUAL; LPAD Output1: **100 LPAD Input2: SELECT LPAD('hello', 21, 'geek') FROM DUAL; LPAD Output2: geekgeekgeekgeekhello RPAD Input1: SELECT RPAD('5000',7,'*') FROM DUAL; RPAD Output1: 5000*** RPAD Input1: SELECT RPAD('earn', 19, 'money') FROM DUAL; RPAD Output1: earnmoneymoneymoney
- TRIM :此函数从开头或结尾(或两者)修剪字符串输入。如果没有指定要从字符串中修剪的字符串或字符,并且在字符串的开头或结尾处存在一些额外的空格,那么这些额外的空格将被修剪掉。
Syntax: TRIM(Leading|Trailing|Both, trim_character FROM trim_source)Input1: SELECT TRIM('G' FROM 'GEEKS') FROM DUAL; Output1: EEKS Input2: SELECT TRIM(' geeksforgeeks ') FROM DUAL; Output2:geeksforgeeks
- REPLACE :此函数搜索字符,如果找到,则在该字符串的所有出现处将字符串。 REPLACE 可用于搜索字符模式,然后在单个函数调用中更改该模式的所有实例。
如果没有给出替换字符串,则 REPLACE函数将删除字符串字符串该字符的所有出现。如果既没有指定匹配字符串也没有指定替换字符串,则 REPLACE 返回 NULL。句法:
REPLACE(Text, search_string, replacement_string)
Input1: SELECT REPLACE('DATA MANAGEMENT', 'DATA','DATABASE') FROM DUAL; Output1: DATABASE MANAGEMENT Input2: SELECT REPLACE('abcdeabcccabdddeeabcc', 'abc') FROM DUAL; Output2: deccabdddeec