STRING DE TRADUZIR
A cláusula TRANSLATE STRING permite substituições de string nas colunas de string selecionadas da consulta SQL.
- replacement_pair fica para a seguinte sequência "nome_coluna | 'literal' [BY nome_coluna | 'literal']".
- column_spec significa "FOR|EXCETO (coluna [, coluna, coluna ...])"
- Sintaxe
- TRADUZIR STRING (SUPERIOR | column_name | 'literal' POR nome_coluna | 'literal' [PAD COM nome_coluna | 'char'] [FOR | EXCETO (nome_coluna)])
- Variáveis
- column_name
O nome de uma coluna na instrução SELECT *.
- Padrão
- Nenhum.
Opções
- MAIÚSCULA
- Esta opção permite especificar que os caracteres devem ser convertidos em maié superior.
- PAD COM column_name/'char '
- Este é o equivalente ao quarto argumento pad-char-exp na função escalar TRANSLATE () Db2 . É uma expressão que especifica o caractere a ser usado como padrão um para os substitutos de caracteres.
- PARA (column_name)
- Estes lidos são opcionais. Esta opção permite especificar uma ou várias colunas string a cláusula TRANSLATE STRING deve ser aplicada em. Este é o equivalente ao primeiro argumento string-exp na função escalar TRANSLATE () Db2 . É uma expressão que especifica a sequência que os substitutos de caracteres devem ser aplicados em.
- EXCETO (column_name)
- Estes lidos são opcionais. Esta opção permite especificar uma ou várias colunas string a cláusula TRANSLATE STRING não deve ser aplicada em.
- EM "filename"
- Os substitutos a serem aplicados em strings são especificados em um arquivo externo.
Conteúdo do arquivo especificado para a opção IN "filename"
seek_value:replace_value:pad_value;for:column1,...,columnn
seek_value:replace_value;for:column1,...,columnn
seek_value:replace_value:pad_value;except:column1,...,columnn
seek_value:replace_value;except:column1,...,columnn
seek_value:replace_value:pad_value;
seek_value:replace_value;O primeiro e o segundo modelos são para uma substituição de cadeia relacionada pela opção FOR para uma lista de nomes de colunas. Os terceiro e quarto modelos são para uma substituição de cadeia relacionada pela opção EXCETO para uma lista de nomes de colunas. E o quinto e sexto modelos são para uma substituição de cadeia não relacionada a qualquer lista de nomes de colunas.O caractere # pode ser usado para adicionar um comentário ao arquivo.
Uma entrada deve conter um caractere de ponto e vírgula (';'), a fim de separar seus dois componentes diferentes (substituição de string, colunas), mesmo que não seja necessário especificar nomes de colunas. A substituição da cadeia é obrigatória, mas a lista de nomes de colunas é opcional. A substituição da cadeia deve conter um valor seeked e um valor de substituição separados por um caractere de dois pontos (':'), e pode conter um valor de preenchimento opcional. Se ele contém um valor de preenchimento, este valor deve ser separado do valor de substituição por um caractere de dois pontos (':'). Os itens nas listas de nomes de colunas devem ser separados por caracteres de vírgula (','). Ao ser especificado, uma lista de nomes de colunas deve seguir a palavra-chave 'para' ou 'exceto' e um caractere de colon (':').
O uso de tal arquivo externo é uma alternativa de especificação de uma cláusula inteira TRANSLATE STRING em um arquivo de controle, além de sua opção UPPER. Como resultado, para qualquer entrada nele, o significado de seus dois componentes (substituição string, colunas) é exatamente o mesmo que os respectivos dois componentes de uma cláusula inteira TRANSLATE STRING .
Regras
As opções FOR ou EXCETO podem ser usadas apenas com um "SELECT *".
Quando as opções EXCETO e FOR são usadas em uma cláusula TRANSLATE STRING , uma coluna string especificada em uma opção FOR deve ser especificada na opção EXCETO.
Só pode haver uma opção EXCETO na cláusula TRANSLATE STRING .
Pode haver mais de uma opção FOR na cláusula TRANSLATE STRING . E os nomes da coluna string especificados nas várias opções de FOR podem aparecer apenas uma vez em uma determinada opção FOR, e também apenas uma vez em todas as opções FOR.
Quando nenhuma opção FOR ou EXCETO é especificada na cláusula TRANSLATE STRING , os substitutos dos caracteres serão feitos em todas as colunas string especificadas na consulta SQL.
É permitida apenas uma substituição de caracteres sem qualquer opção FOR ou EXCETO.
- se uma especificação de substituição de caracteres for feita sem nenhuma opção FOR ou EXCETO na cláusula TRANSLATE STRING , então esta substituição de caracteres será aplicada nas colunas string em questão.
- se não houver substituição de caracteres especificados sem qualquer opção EXCETO ou FOR na cláusula TRANSLATE STRING , nenhum substituição de caracteres será aplicado às colunas string em questão.
Quando uma instrução SELECT é processada por meio do Db2, a cláusula TRANSLATE STRING é ignorada.
Exemplos
[i1111@lat117 Test]$ db2hpu -f sysin -i i1111
INZM031I Optim High Performance Unload for Db2 06.05.00.002.01(210726)
64 bits 07/27/2021 (Linux lat117 3.10.0-957.21.3.el7.x86_64
INZI473I Memory limitations: 'unlimited' for virtual memory and 'unlimited' for data segment
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+
000001 GLOBAL CONNECT TO SAMPLE;
000002 UNLOAD TABLESPACE
000003 DB2 NO
000004 LOCK NO
000005 FLUSH BUFFERPOOLS NO
000006 SELECT * FROM EMPLOYEE;
000007 TRANSLATE STRING ('EA' BY 'ea' FOR (FIRSTNME), 'TN' BY 'tn' EXCEPT (FIRSTNME, JOB), 'MG' BY 'mg')
000008 FORMAT DEL;
INZU462I HPU control step start: 07/27/2021 17:37:34.819.
INZU463I HPU control step end : 07/27/2021 17:37:35.104.
INZU464I HPU run step start : 07/27/2021 17:37:35.246.
"000020","MICHaeL","L","tHOMPSOn","B01","3476",20031010,"mANAgER ",18,"M",19780202,+0094250.00,+0000800.00,+0003300.00
"000060","IRVING","F","StERn","D11","6423",20030914,"mANAgER ",16,"M",19750707,+0072250.00,+0000500.00,+0002580.00
"000090","eILeeN","W","HEnDERSOn","E11","5498",20000815,"mANAgER ",16,"F",19710515,+0089750.00,+0000600.00,+0002380.00
…
INZU410I HPU utility has unloaded 42 rows on lat117 host for I1111.EMPLOYEE in stdout.
INZU465I HPU run step end : 07/27/2021 17:37:35.262.
INZI441I HPU successfully ended: Real time -> 0m0.443222s
User time -> 0m0.178133s : Parent -> 0m0.178133s, Children -> 0m0.000000s
Syst time -> 0m0.066422s : Parent -> 0m0.066422s, Children -> 0m0.000000s[i1111@lat117 Test]$ db2hpu -f sysin -i i1111
INZM031I Optim High Performance Unload for Db2 06.05.00.002.01(210726)
64 bits 07/27/2021 (Linux lat117 3.10.0-957.21.3.el7.x86_64
INZI473I Memory limitations: 'unlimited' for virtual memory and 'unlimited' for data segment
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+
000001 GLOBAL CONNECT TO SAMPLE;
000002 UNLOAD TABLESPACE
000003 DB2 NO
000004 LOCK NO
000005 FLUSH BUFFERPOOLS NO
000006 SELECT EMPNO, FIRSTNME, LASTNAME FROM EMPLOYEE;
000007 TRANSLATE STRING ('EA' BY 'ea')
000008 FORMAT DEL;
INZU462I HPU control step start: 07/27/2021 17:45:51.253.
INZU463I HPU control step end : 07/27/2021 17:45:51.619.
INZU464I HPU run step start : 07/27/2021 17:45:52.371.
"000020","MICHaeL","THOMPSON"
"000060","IRVING","STeRN"
"000090","eILeeN","HeNDeRSON"
…
INZU410I HPU utility has unloaded 42 rows on lat117 host for I1111.EMPLOYEE in stdout.
INZU465I HPU run step end : 07/27/2021 17:45:52.385.
INZI441I HPU successfully ended: Real time -> 0m1.131917s
User time -> 0m0.176899s : Parent -> 0m0.176899s, Children -> 0m0.000000s
Syst time -> 0m0.064598s : Parent -> 0m0.064598s, Children -> 0m0.000000s[i1111@lat117 Test]$ db2hpu -f SYSIN53 -i i1111
INZM031I Optim High Performance Unload for Db2 06.05.00.002.05(220413)
64 bits 04/15/2022 (Linux lat117 3.10.0-957.21.3.el7.x86_64
INZI473I Memory limitations: 'unlimited' for virtual memory and 'unlimited' for data segment
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+
000001 GLOBAL CONNECT TO SAMPLE;
000002 UNLOAD TABLESPACE
000003 DB2 NO
000004 LOCK NO
000005 FLUSH BUFFERPOOLS NO
000006 SELECT * FROM EMPLOYEE;
000007 TRANSLATE STRING IN "/home/i1111/Test/translate.txt"
000008 FORMAT DEL;
INZU462I HPU control step start: 04/15/2022 16:49:55.676.
INZU463I HPU control step end : 04/15/2022 16:49:55.803.
INZU464I HPU run step start : 04/15/2022 16:49:56.391.
"000020","MICHaeL","L","tHOMPSOn","B01","3476",20031010,"mANAgER ",18,"M",19780202,+0094250.00,+0000800.00,+0003300.00
"000060","IRVING","F","StERn","D11","6423",20030914,"mANAgER ",16,"M",19750707,+0072250.00,+0000500.00,+0002580.00
"000090","eILeeN","W","HEnDERSOn","E11","5498",20000815,"mANAgER ",16,"F",19710515,+0089750.00,+0000600.00,+0002380.00
…
INZU410I HPU utility has unloaded 42 rows on lat117 host for I1111.EMPLOYEE in stdout.
INZU465I HPU run step end : 04/15/2022 16:49:56.402.
INZI441I HPU successfully ended: Real time -> 0m0.725356s
User time -> 0m0.063835s : Parent -> 0m0.063835s, Children -> 0m0.000000s
Syst time -> 0m0.026162s : Parent -> 0m0.026162s, Children -> 0m0.000000s
[i1111@lat117 Test]$
[i1111@lat117 Test]$ cat translate.txt
'EA':'ea';for:firstnme
'TN':'tn';except:firstnme,job
'MG':'mg';