首页 > 解决方案 > SQL 查询:如何检查特定记录的字母是否多于数字并返回

问题描述

我正在使用 Microsoft SQL Server 2014。

如果特定记录的字母多于数字,我想在 SQL 查询的帮助下显示结果。

例如:如果一个表有列“CustomerName”并且它的值是“ALeX143ForU”(因为它的字母比数字多),那么查询应该返回那个特定的记录。

标签: sqlsql-serverregex

解决方案


有点不寻常,但你可以试试下面的逻辑 -

在这里演示

SELECT *
FROM your_table_name
WHERE
-- Below is calculating String LEN only for Alphabet
LEN(
    REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
    your_column_name,'0',''),'1',''),'2',''),'3',''),'4',''),'4',''),'6',''),'7',''),'8',''),'9','')
) 
>
-- Calculate LEN for Integer value only
(
    -- Full string LEN
    LEN(your_column_name) -
    -- LEN for only alphabet
    LEN(
       REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
    your_column_name,'0',''),'1',''),'2',''),'3',''),'4',''),'4',''),'6',''),'7',''),'8',''),'9','')
    )
)

推荐阅读