Sql 表中的最大长度值
我有一个表格,我想知道“电话号码”和“电子邮件地址”字段中的最大长度值是多少 我想知道输入的值是否大于允许的值 这是我的疑问:Sql 表中的最大长度值,sql,oracle,Sql,Oracle,我有一个表格,我想知道“电话号码”和“电子邮件地址”字段中的最大长度值是多少 我想知道输入的值是否大于允许的值 这是我的疑问: SELECT hp.party_name , hca.account_number , hca.cust_account_id -- , hcsu.LOCATION customer_site_name , hcas.cust_acc
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 = ''
;
字段的最大长度: 不需要分组依据,因为您正在聚合整个集合。请注意,这会告诉您已知的最长数据(如返回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
如果要在表的给定字段中查找字段长度最大的行,请尝试以下查询
SELECT *
FROM TABLE_NAME
WHERE LENGTH(FIELD_NAME) =
(
SELECT MAX(LENGTH(FIELD_NAME))
FROM TABLE_NAME
)
添加一些示例数据。您正在查看的条目看起来像什么?您希望它们看起来像什么?@SandPiper我想知道最大长度值是多少,例如:如果存在一个包含2封电子邮件或3封电子邮件的字段请勾选以下链接:如何定义最大允许值?例如,如果
hz\u contact\u points.phone\u number
被定义为varchar2(20)
,那么根据定义,任何值都不能超过该值,因此我不确定您要查找哪些值。“如果有一个字段包含2封电子邮件或3封电子邮件”呃?这与求列的最大长度非常不同。您可能需要发布一些示例数据来说明您试图解决的问题。谢谢您的回复。我尝试了您的查询,但它不起作用,请看:@programming\u mazing您在MAX(LENGTH(FIELD\u NAME))中缺少一个右括号
SELECT *
FROM hz_contact_points
WHERE email_address LIKE '%@%@%'
SELECT *
FROM TABLE_NAME
WHERE LENGTH(FIELD_NAME) =
(
SELECT MAX(LENGTH(FIELD_NAME))
FROM TABLE_NAME
)