A value with a distinct type can only be compared to another value with exactly the same type because distinct types have strong typing, which means that a distinct
type is compatible only with its own type.
Um valor com um tipo distinto só pode ser comparado a outro valor com exatamente o mesmo tipo porque tipos distintos têm tipificação forte,
o que significa que um tipo distinto é compatível apenas com seu próprio tipo.
To compare a distinct type to a value with a different data type, the distinct type value must be cast to the data type of the comparison value or the comparison
value must be cast to the distinct type.
For example, because constants are built-in data types, a constant can be compared to a distinct type value only if it is first cast to the distinct type or vice
versa.
Para comparar um tipo distinto a um valor com um tipo de dados diferente, o valor do tipo distinto deve ser convertido para o tipo de dados do
valor de comparação ou o valor de comparação deve ser convertido para o tipo distinto.
Por exemplo, como as constantes são tipos de dados internos, uma constante pode ser comparada a um valor de tipo distinto apenas se for convertida primeiro para o
tipo distinto ou vice-versa.
The following table shows examples of valid and invalid comparisons, assuming the following SQL statements were used to define two distinct types AGE_TYPE and
CAMP_DATE and table CAMP_ROSTER table.
A tabela a seguir mostra exemplos de comparações válidas e inválidas, assumindo que as seguintes instruções SQL foram utilizadas para definir
dois tipos distintos AGE_TYPE e CAMP_DATE e a tabela CAMP_ROSTER.
CREATE TYPE AGE_TYPE AS INTEGER;
CREATE TYPE CAMP_DATE AS DATE;
CREATE TABLE CAMP_ROSTER
( NAME VARCHAR(20),
ATTENDEE_NUMBER INTEGER NOT NULL,
AGE AGE_TYPE,
FIRST_CAMP_DATE CAMP_DATE,
LAST_CAMP_DATE CAMP_DATE,
BIRTHDATE DATE);
Table 1. Examples of valid and invalid comparisons involving distinct types - Exemplos de comparações válidas e inválidas envolvendo tipos distintos
Instrução SQL |
Válido |
Reason - Razão |
Distinct types with distinct types - Tipos distintos com tipos distintos |
SELECT *
FROM CAMP_ROSTER
WHERE FIRST_CAMP_DATE < LAST_CAMP_DATE; |
Yes |
Both values are the same distinct type.
Ambos os valores são do mesmo tipo distinto. |
Distinct types with columns of the same source data type - Tipos distintos com colunas do mesmo tipo de dados de origem |
SELECT *
FROM CAMP_ROSTER
WHERE AGE > ATTENDEE_NUMBER; |
No |
A distinct type cannot be compared to integer.
Um tipo distinto não pode ser comparado ao inteiro. |
SELECT *
FROM CAMP_ROSTER
WHERE INTEGER(AGE) > ATTENDEE_NUMBER;
SELECT *
FROM CAMP_ROSTER
WHERE CAST(AGE AS INTEGER) > ATTENDEE_NUMBER; |
Yes |
The distinct type is cast to an integer, making the comparison of two integers.
O tipo distinto é convertido em um inteiro, fazendo a comparação de dois inteiros. |
SELECT *
FROM CAMP_ROSTER
WHERE AGE > AGE_TYPE(ATTENDEE_NUMBER);
SELECT *
FROM CAMP_ROSTER
WHERE AGE > CAST(ATTENDEE_NUMBER as AGE_TYPE); |
Yes |
Integer ATTENDEE_NUMBER is cast to the distinct type AGE_TYPE, making both values the same distinct type.
O número inteiro ATTENDEE_NUMBER é convertido para o tipo distinto AGE_TYPE, tornando ambos os valores do mesmo tipo distinto. |
Distinct types with constants - Tipos distintos com constantes |
SELECT *
FROM CAMP_ROSTER
WHERE AGE IN (15,16,17); |
No |
A distinct type cannot be compared to a constant.
Um tipo distinto não pode ser comparado a uma constante. |
SELECT *
FROM CAMP_ROSTER
WHERE INTEGER(AGE) IN (15,16,17); |
Yes |
The distinct type is cast to the data type of constants, making all the values in the comparison integers.
O tipo distinto é convertido para o tipo de dados de constantes, tornando todos os valores nos inteiros de comparação. |
SELECT *
FROM CAMP_ROSTER
WHERE AGE IN
(AGE_TYPE(15),AGE_TYPE(16),AGE_TYPE(17)); |
Yes |
Constants are cast to distinct type AGE_TYPE, making all the values in the comparison the same distinct type.
As constantes são convertidas em tipos distintos AGE_TYPE, tornando todos os valores na comparação do mesmo tipo distinto. |
SELECT *
FROM CAMP_ROSTER
WHERE FIRST_CAMP_DATE > '06/12/99'; |
No |
A distinct type cannot be compared to a constant.
Um tipo distinto não pode ser comparado a uma constante. |
SELECT *
FROM CAMP_ROSTER
WHERE FIRST_CAMP_DATE >
CAST('06/12/99' AS CAMP_DATE); |
No |
The string constant '06/12/99', a VARCHAR data type, cannot be cast directly to distinct type CAMP_DATE, which is based on a DATE data type.
As illustrated in the next row, the constant must be cast to a DATE data type and then to the distinct type.
A constante de string '06 / 12/99 ', um tipo de dados VARCHAR, não pode ser convertida diretamente para o tipo distinto CAMP_DATE, que é
baseado em um tipo de dados DATE.
Conforme ilustrado na próxima linha, a constante deve ser convertida em um tipo de dados DATE e, em seguida, em um tipo distinto. |
SELECT *
FROM CAMP_ROSTER
WHERE FIRST_CAMP_DATE >
CAST(DATE('06/12/1999') AS CAMP_DATE); |
Yes |
The string constant '06/12/99' is cast to the distinct type CAMP_DATE, making both values the same distinct type.
To cast a string constant to a distinct type that is based on a DATE, TIME, or TIMESTAMP data type, the string constant must first be cast to a DATE, TIME, or
TIMESTAMP data type.
A constante de string '06 / 12/99 'é convertida para o tipo distinto CAMP_DATE, tornando ambos os valores do mesmo tipo distinto.
Para converter uma constante de string em um tipo distinto baseado em um tipo de dados DATE, TIME ou TIMESTAMP, a constante de string deve primeiro ser
convertida em um tipo de dados DATE, TIME ou TIMESTAMP. |
Distinct types with host variables - Tipos distintos com variáveis de host |
SELECT *
FROM CAMP_ROSTER
WHERE AGE BETWEEN :HV_INTEGER AND :HV_INTEGER2; |
No |
The host variables have integer data types.
A distinct type cannot be compared to an integer.
As variáveis do host têm tipos de dados inteiros.
Um tipo distinto não pode ser comparado a um inteiro. |
SELECT *
FROM CAMP_ROSTER
WHERE AGE BETWEEN CAST(:HV_INTEGER AS AGE_TYPE)
AND AGE_TYPE(:HV_INTEGER2); |
Yes |
The host variables are cast to distinct type AGE_TYPE, making all the values the same distinct type.
As variáveis do host são convertidas em um tipo distinto AGE_TYPE, tornando todos os valores do mesmo tipo distinto. |
SELECT *
FROM CAMP_ROSTER
WHERE FIRST_CAMP_DATE > :HV_VARCHAR; |
No |
The host variable has a VARCHAR data type.
A distinct type cannot be compared to a VARCHAR.
A variável do host possui um tipo de dados VARCHAR.
Um tipo distinto não pode ser comparado a um VARCHAR. |
SELECT *
FROM CAMP_ROSTER
WHERE FIRST_CAMP_DATE >
CAST(DATE(:HV_VARCHAR) AS CAMP_DATE); |
Yes |
The host variable is cast to the distinct type CAMP_DATE, making both values the same distinct type.
To cast a VARCHAR host variable to a distinct type that is based on a DATE, TIME, or TIMESTAMP data type, the host variable must first be cast to a DATE,
TIME, or TIMESTAMP data type.
A variável do host é convertida para o tipo distinto CAMP_DATE, tornando ambos os valores do mesmo tipo distinto.
Para converter uma variável de host VARCHAR em um tipo distinto baseado em um tipo de dados DATE, TIME ou TIMESTAMP, a variável de host deve primeiro ser
convertida em um tipo de dados DATE, TIME ou TIMESTAMP. |
© Copyright IBM Corp.
|