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