Mysql 在Oracle SQL中,如何从右侧开始计算一列中有多少个零

Mysql 在Oracle SQL中,如何从右侧开始计算一列中有多少个零,mysql,sql,count,case,Mysql,Sql,Count,Case,我目前正在验证一个列,该列包含每个客户的参考号,但它们必须是一种特定的格式,才能算作真正的数字 我最初收到大约80个csv文件,并在经过确保所有表具有相同列数等过程后将其上载到单个主表中。下面是一个示例,因为我有90多列 下面是我的CREATETABLE查询,我决定将所有内容作为varchar列栏保留在第一个ID列中,以确保没有丢失数据的问题 CREATE TABLE IF NOT EXISTS `master_table` ( `id` int(11) NOT NULL, `Name`

我目前正在验证一个列,该列包含每个客户的参考号,但它们必须是一种特定的格式,才能算作真正的数字

我最初收到大约80个csv文件,并在经过确保所有表具有相同列数等过程后将其上载到单个主表中。下面是一个示例,因为我有90多列

下面是我的CREATETABLE查询,我决定将所有内容作为varchar列栏保留在第一个ID列中,以确保没有丢失数据的问题

CREATE TABLE IF NOT EXISTS `master_table` (
  `id` int(11) NOT NULL,
  `Name` varchar(255) ,
  `Business_Name` varchar(255) ,
  `Contact_Person` varchar(255) ,
  `Tel_Number` varchar(255) ,
  `Tel_Number_2` varchar(255) ,
  `Email` varchar(255) ,
  `House_Name` varchar(255) ,
  `Door_Number` varchar(255) ,
  `Street` varchar(255) ,
  `Town` varchar(255) ,
  `Locality` varchar(255) ,
  `County` varchar(255) ,
  `Post_Code` varchar(255) ,
  `Supplier` varchar(255) ,
  `Annual_Usage` varchar(255) ,
  `Start_Date` varchar(255) ,
  `End_Date` varchar(255) ,
  `PA_Nmbr` varchar(255)
  ;
然后我上传了我所有的数据,这给了我大约90万行数据

我感兴趣的具体专栏是PA_Nmbr专栏。这是一个真正的参考号,它需要有13位的长度,所以我写了下面的查询,看看我的记录计数是什么样子的:

SELECT
    SUM(CASE WHEN LEN <13 THEN CNT ELSE 0 END) AS UNDER_13,     -- 201,112
    SUM(CASE WHEN LEN =13 THEN CNT ELSE 0 END) AS PA_13,      -- 701,019
    SUM(CASE WHEN LEN >13 THEN CNT ELSE 0 END) AS OVER_13       -- 942
FROM
(
SELECT
    LENGTH(PA_NMBR) AS LEN,
    COUNT(*) AS CNT
FROM
    master_table
GROUP BY
    LENGTH(PA_NMBR)
) A
;
这告诉我,大约70%的数据具有正确的长度,但下一步检查是确保当我将数据添加到数据库中时,数字没有被四舍五入。例如,如果有一个真正的数字123456789999,这个数字已经被四舍五入到123456789000

因此,我陷入困境的是,我想写一个查询,在这里我可以从右侧计算列中有多少0

因此,如果我想快速检查并计算我有多少条记录,这些记录以数字开始,即1234,然后是所有0,我可以快速完成。这会告诉我数据本身存在问题

如果有人能建议我如何写这个查询,我将不胜感激


提前谢谢

看看SELECT LENREPLACE'yynynnyyny',N',方法。这里提出并回答了一个类似的问题:

您的创建表看起来像MySQL,而不是Oracle。请澄清您实际使用的数据库。您好,Gordon,原始表位于PHPMyAdmin环境下的MySQL中,但我使用SQL Developer作为我的客户端,因为这是一个我习惯使用的工具,因此会产生混淆。所以您想要与MySQL兼容的数据库吗?您好,Nick,不一定,我上面写的查询都是在Oracle SQL中运行的,所以理想情况下,我希望它也能在Oracle SQL中使用。你好,Nick,谢谢你的帮助,效果非常好。是否需要从右边检查,而不是作为一个整体检查?对不起,是的,我忘记了正确的要求。在这种情况下,您可能想研究子字符串方法?看看这里,我想这可能会有帮助谢谢Nick,非常感谢