PL / SQL - Strings
A string em PL / SQL é na verdade uma sequência de caracteres com uma especificação de tamanho opcional. Os caracteres podem ser numéricos, letras, espaços em branco, caracteres especiais ou uma combinação de todos. PL / SQL oferece três tipos de strings -
Fixed-length strings- Em tais strings, os programadores especificam o comprimento ao declarar a string. A string é preenchida à direita com espaços no comprimento especificado.
Variable-length strings - Em tais strings, um comprimento máximo de até 32.767, para a string é especificado e nenhum preenchimento ocorre.
Character large objects (CLOBs) - São strings de comprimento variável que podem ter até 128 terabytes.
As strings PL / SQL podem ser variáveis ou literais. Um literal de string é colocado entre aspas. Por exemplo,
'This is a string literal.' Or 'hello world'
Para incluir uma aspa simples dentro de uma string literal, você precisa digitar duas aspas simples uma ao lado da outra. Por exemplo,
'this isn''t what it looks like'
Declarando Variáveis de String
O banco de dados Oracle fornece vários tipos de dados de string, como CHAR, NCHAR, VARCHAR2, NVARCHAR2, CLOB e NCLOB. Os tipos de dados prefixados com um'N' está 'national character set' tipos de dados, que armazenam dados de caracteres Unicode.
Se você precisar declarar uma string de comprimento variável, deverá fornecer o comprimento máximo dessa string. Por exemplo, o tipo de dados VARCHAR2. O exemplo a seguir ilustra a declaração e o uso de algumas variáveis de string -
DECLARE
name varchar2(20);
company varchar2(30);
introduction clob;
choice char(1);
BEGIN
name := 'John Smith';
company := 'Infotech';
introduction := ' Hello! I''m John Smith from Infotech.';
choice := 'y';
IF choice = 'y' THEN
dbms_output.put_line(name);
dbms_output.put_line(company);
dbms_output.put_line(introduction);
END IF;
END;
/
Quando o código acima é executado no prompt SQL, ele produz o seguinte resultado -
John Smith
Infotech
Hello! I'm John Smith from Infotech.
PL/SQL procedure successfully completed
Para declarar uma string de comprimento fixo, use o tipo de dados CHAR. Aqui você não precisa especificar um comprimento máximo para uma variável de comprimento fixo. Se você deixar a restrição de comprimento, o Oracle Database usará automaticamente o comprimento máximo necessário. As duas declarações a seguir são idênticas -
red_flag CHAR(1) := 'Y';
red_flag CHAR := 'Y';
Funções e operadores de string PL / SQL
PL / SQL oferece o operador de concatenação (||)para juntar duas cordas. A tabela a seguir fornece as funções de string fornecidas pela PL / SQL -
S.No | Função e objetivo |
---|---|
1 | ASCII(x); Retorna o valor ASCII do caractere x. |
2 | CHR(x); Retorna o caractere com o valor ASCII de x. |
3 | CONCAT(x, y); Concatena as strings xey e retorna a string anexada. |
4 | INITCAP(x); Converte a letra inicial de cada palavra em x em maiúsculas e retorna essa string. |
5 | INSTR(x, find_string [, start] [, occurrence]); Pesquisas por find_string em xe retorna a posição em que ocorre. |
6 | INSTRB(x); Retorna a localização de uma string dentro de outra string, mas retorna o valor em bytes. |
7 | LENGTH(x); Retorna o número de caracteres em x. |
8 | LENGTHB(x); Retorna o comprimento de uma string de caracteres em bytes para o conjunto de caracteres de byte único. |
9 | LOWER(x); Converte as letras de x em minúsculas e retorna essa string. |
10 | LPAD(x, width [, pad_string]) ; Almofadas x com espaços à esquerda, para trazer o comprimento total da string para caracteres de largura. |
11 | LTRIM(x [, trim_string]); Corta caracteres à esquerda de x. |
12 | NANVL(x, value); Retorna o valor se x corresponder ao valor especial NaN (não um número), caso contrário x é devolvido. |
13 | NLS_INITCAP(x); Igual à função INITCAP, exceto que pode usar um método de classificação diferente, conforme especificado por NLSSORT. |
14 | NLS_LOWER(x) ; Igual à função LOWER, exceto que pode usar um método de classificação diferente conforme especificado por NLSSORT. |
15 | NLS_UPPER(x); Igual à função UPPER, exceto que pode usar um método de classificação diferente conforme especificado por NLSSORT. |
16 | NLSSORT(x); Altera o método de classificação dos personagens. Deve ser especificado antes de qualquer função NLS; caso contrário, a classificação padrão será usada. |
17 | NVL(x, value); Retorna valor se xé nulo; caso contrário, x é retornado. |
18 | NVL2(x, value1, value2); Retorna valor1 se x não for nulo; se x for nulo, valor2 será retornado. |
19 | REPLACE(x, search_string, replace_string); Pesquisas x para search_string e substitui-o por replace_string. |
20 | RPAD(x, width [, pad_string]); Almofadas x para a direita. |
21 | RTRIM(x [, trim_string]); Trims x da direita. |
22 | SOUNDEX(x) ; Retorna uma string contendo a representação fonética de x. |
23 | SUBSTR(x, start [, length]); Retorna uma substring de xque começa na posição especificada por start. Um comprimento opcional para a substring pode ser fornecido. |
24 | SUBSTRB(x); O mesmo que SUBSTR, exceto que os parâmetros são expressos em bytes em vez de caracteres para os sistemas de caracteres de byte único. |
25 | TRIM([trim_char FROM) x); Corta caracteres da esquerda e direita de x. |
26 | UPPER(x); Converte as letras de x em maiúsculas e retorna essa string. |
Vamos agora trabalhar em alguns exemplos para entender o conceito -
Exemplo 1
DECLARE
greetings varchar2(11) := 'hello world';
BEGIN
dbms_output.put_line(UPPER(greetings));
dbms_output.put_line(LOWER(greetings));
dbms_output.put_line(INITCAP(greetings));
/* retrieve the first character in the string */
dbms_output.put_line ( SUBSTR (greetings, 1, 1));
/* retrieve the last character in the string */
dbms_output.put_line ( SUBSTR (greetings, -1, 1));
/* retrieve five characters,
starting from the seventh position. */
dbms_output.put_line ( SUBSTR (greetings, 7, 5));
/* retrieve the remainder of the string,
starting from the second position. */
dbms_output.put_line ( SUBSTR (greetings, 2));
/* find the location of the first "e" */
dbms_output.put_line ( INSTR (greetings, 'e'));
END;
/
Quando o código acima é executado no prompt SQL, ele produz o seguinte resultado -
HELLO WORLD
hello world
Hello World
h
d
World
ello World
2
PL/SQL procedure successfully completed.
Exemplo 2
DECLARE
greetings varchar2(30) := '......Hello World.....';
BEGIN
dbms_output.put_line(RTRIM(greetings,'.'));
dbms_output.put_line(LTRIM(greetings, '.'));
dbms_output.put_line(TRIM( '.' from greetings));
END;
/
Quando o código acima é executado no prompt SQL, ele produz o seguinte resultado -
......Hello World
Hello World.....
Hello World
PL/SQL procedure successfully completed.