Максимальное значение длины в таблице - PullRequest
0 голосов
/ 01 января 2019

У меня есть таблица, и я хотел бы знать, каково максимальное значение длины, которое существует в полях "phone_number" и email_address.

Я хочу знать, существует ли какое-либо введенное значение, котороебольше допустимого.

Это мой запрос:

    SELECT
    hp.party_name                              
  , hca.account_number
  , hca.cust_account_id                        
 -- , hcsu.LOCATION customer_site_name
  , hcas.cust_acct_site_id                     
  , hcp.phone_number
  , hcp.email_address
  , hl.address1
  , hl.address2
  , hl.address3
  , hl.address4
  , hl.city
  , hl.province
  , hl.postal_code
  , hcas.status                                
  , DECODE( hcas.attribute5, 'PUP', 'Y', 'N' ) 
  , hca.status                                 
FROM apps.hz_cust_accounts hca
INNER JOIN apps.hz_cust_acct_sites_all hcas ON hca.cust_account_id = hcas.cust_account_id
INNER JOIN apps.hz_party_sites hps ON hcas.party_site_id = hps.party_site_id
INNER JOIN apps.hz_locations hl ON hps.location_id = hl.location_id
INNER JOIN apps.hz_parties hp ON hps.party_id = hp.party_id
LEFT JOIN (
        SELECT
            owner_table_id
          , max(case when contact_point_type = 'PHONE' then phone_number end) phone_number
          , max(case when contact_point_type = 'EMAIL' then email_address end) email_address
        FROM hz_contact_points
        WHERE status = 'A'
        AND primary_flag = 'Y'
        AND owner_table_name = 'HZ_PARTY_SITES'
        AND contact_point_type IN ('EMAIL','PHONE')
        GROUP BY 
            owner_table_id
    ) hcp ON hcas.party_site_id = hcp.owner_table_id 
WHERE hcas.status = 'A'
AND hps.status = 'A'
AND hca.status = 'A'
AND hca.account_number = ''
;

Ответы [ 2 ]

0 голосов
/ 01 января 2019

Если вы хотите найти строки, которые имеют максимальную длину поля в данном поле таблицы, попробуйте следующий запрос.

SELECT *
FROM TABLE_NAME
WHERE LENGTH(FIELD_NAME) =
(
SELECT MAX(LENGTH(FIELD_NAME))
FROM TABLE_NAME
)
0 голосов
/ 01 января 2019

Максимальная длина поля (полей):

SELECT MAX(LENGTH(email_address)), MAX(LENGTH(phone_number)) FROM hz_contact_points

Группировка не требуется, поскольку вы агрегируете весь набор.Обратите внимание, что это говорит вам о самых длинных известных данных (например, он вернет 72), но больше ничего вам не говорит.Затем вам нужно будет выполнить запрос еще раз, чтобы найти строки, в которых была указана эта длина:

SELECT * 
FROM hz_contact_points 
WHERE LENGTH(email_address) = 72

Может быть проще взглянуть, например, на первые 10 строк, упорядоченные по убыванию длины электронной почты:

SELECT * FROM (
  SELECT * 
  FROM hz_contact_points 
  ORDER BY LENGTH(email_address) DESC
) a
WHERE rownum <= 10

(Если вы используете oracle12c +, вы можете покончить с внешним запросом и написать FETCH FIRST 10 ROWS ONLY)

Строки, имеющие более одного адреса электронной почты:

SELECT * 
FROM hz_contact_points 
WHERE email_address LIKE '%@%@%'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...