我需要帮助,以便从下表中列出所有无效的税号,其中县是美国。 (有效格式严格遵守' XXXXXXXXX'' XX-XXXXXXX',' XXX-XX-XXXX'(所有数值)
因此,如果列具有空值,字母数字,我应该能够返回结果。除上述格式之外的任何内容都应该在输出中。
我写了下面的内容,但它没有给我我想要的东西。
SELECT
AT.ACCOUNTID,
AT.TAXID,
AT.COUNTRY
FROM
ACCOUNT_TABLE AT
WHERE
AT.TAXID NOT LIKE '__-_______%'
AND AT.TAXID NOT LIKE '_________'
AND AT.TAXID NOT LIKE '___-__-____'
AND AT.TAXID IS NULL
AND AT.COUNTRY = 'USA'
结果:
ACCOUNTID TAXID COUNTRY
70656 N/A NULL
69163 FOREIGN GBR
474 REP GERMANY DEU
66295 12-1234567 IRL
69442 660-535408 USA
1441 CANADIAN NULL
70135 999999999 NULL
1369 OFFSHORE CAN
1467 123456789 JE
1473 123-45-6789 FRA
255894 N/A GBR
答案 0 :(得分:0)
的 MYSQL 强>
您的查询需要使用以下正则表达式:
'^[0-9]{3}-[0-9]{2}-[0-9]+$' to match 'XXX-XX-XXXX'
'^[0-9]+$' to match 'XXXXXXXXX'
'^[0-9]{2}-[0-9]+$' to match 'XX-XXXXXXX'
所以,这是完整的查询:
SELECT
AT.ACCOUNTID,
AT.TAXID,
AT.COUNTRY
FROM ACCOUNT_TABLE AT
WHERE AT.COUNTRY = 'USA'
AND (
AT.TAXID IS NULL
OR
(
AND AT.TAXID REGEXP '^[0-9]{2}-[0-9]+$' = 0
AND AT.TAXID REGEXP '^[0-9]{3}-[0-9]{2}-[0-9]+$' = 0
AND AT.TAXID REGEXP '^[0-9]+$' = 0
)
);
答案 1 :(得分:0)
在SQL Server上,您可以使用replace
和isnumeric
对数字进行检查。请注意,某些条件应与逻辑or
结合,而不是and
:
select at.accountid, at.taxid, at.country
from account_table at
where ( not isnumeric(replace(at.taxid, '-', ''))
or ( at.taxid not like '__-_______'
and at.taxid not like '_________'
and at.taxid not like '___-__-____'
)
or at.taxid is null)
and at.country = 'usa'
答案 2 :(得分:0)
希望这有帮助。
SELECT
AT.ACCOUNTID,
AT.TAXID,
AT.COUNTRY
FROM
ACCOUNT_TABLE AT
WHERE AT.COUNTRY = 'USA' and (
AT.TAXID NOT LIKE '__-_______%'
OR AT.TAXID NOT LIKE '_________'
OR AT.TAXID NOT LIKE '___-__-____'
OR AT.TAXID IS NULL );
答案 3 :(得分:0)
以下工作!感谢所有尝试过的人。
Intent in = new Intent(this, com.process.agenda.activity.MainActivity.class);
startActivity(in);