Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL查询:如何检查特定记录的字母是否多于数字并返回该记录_Sql_Sql Server_Regex - Fatal编程技术网

SQL查询:如何检查特定记录的字母是否多于数字并返回该记录

SQL查询:如何检查特定记录的字母是否多于数字并返回该记录,sql,sql-server,regex,Sql,Sql Server,Regex,我正在使用Microsoft SQL Server 2014 我希望在SQL查询的帮助下,如果特定记录的字母比数字多,则显示结果 例如:如果一个表有“CustomerName”列,并且它有“ALeX143ForU”值(因为它的字母比数字多),那么查询应该返回那个特定的记录。有点不寻常,但是您可以尝试下面的逻辑- 你能检查一下逻辑吗,因为它不工作。我没有得到期望的结果。仅供参考,我在“Customers”表中有“CustomerName”列,其中包含客户的用户名。我想显示用户名的字母比数字多的客

我正在使用Microsoft SQL Server 2014

我希望在SQL查询的帮助下,如果特定记录的字母比数字多,则显示结果


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

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


你能检查一下逻辑吗,因为它不工作。我没有得到期望的结果。仅供参考,我在“Customers”表中有“CustomerName”列,其中包含客户的用户名。我想显示用户名的字母比数字多的客户列表。(如上述示例所述)。@SriLakshmanaTeja该逻辑应该有效。你能看一下演示吗?对不起,我的错,它工作得很好。有没有可能优化查询?@SriLakshmanaTeja很高兴看到它起作用了。请不要忘记投票:)@SriLakshmanaTeja-据我所知,MSSQL server 2017提供了优化选项。从该版本中添加了一个新的TRANSLATE方法,您可以轻松地检查相同的逻辑。
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','')
    )
)