Microsoft SQL - Count varchar where max len = n

Posted on 2014-02-06
Last Modified: 2014-02-06
Hello -

Hopefully an easy one for you.  I have a varchar(7) field in which the majority of the values are 7 digit numbers ('#######').  

I'm trying to count the number of records that have a "valid" 7 digit number value in them.  

I tried:

SELECT COUNT(myField) FROM myTable HAVING MAX(LEN(myField)) ='7'
That returned the count of all records in my table.  I know there are some blanks and commas and things in there so I know that's not right - Maybe I should use rtrim/ltrim?  

Then after a little research I found "DATALENGTH" and tried:

That returned a count smaller than the total record count (more than half).  This seems realistic but I'm not sure if I'm getting what I'm asking for.  

What would be the best way to go about this?

Question by:ttist25
LVL 16

Assisted Solution

by:Surendra Nath
Surendra Nath earned 125 total points
ID: 39839447
ok you can try the below one

select count(1) from myTable where len(myField) = 7

Open in new window

LVL 25

Assisted Solution

by:Lee Savidge
Lee Savidge earned 125 total points
ID: 39839469
SELECT COUNT(myField) FROM myTable where LEN(myField) =7

Open in new window

LVL 65

Expert Comment

by:Jim Horn
ID: 39839511
>I'm trying to count the number of records that have a "valid" 7 digit number value in them.
Define 'valid'.  Seven characters, all numbers?
LVL 75

Assisted Solution

by:Aneesh Retnakaran
Aneesh Retnakaran earned 125 total points
ID: 39839520
SELECT COUNT(myField) FROM myTable WHERE myfield like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
LVL 65

Accepted Solution

Jim Horn earned 125 total points
ID: 39839534
CREATE TABLE #foo (myField varchar(7) )

INSERT INTO #foo (myField) 
   ('1234567'), ('123,567'), ('  12345'), ('12345  '), ('1234567'), ('(23456)'),
   ('42'), ('one'), (NULL), ('BR549'), ('OU812'), ('foo')

-- Here's your seven numbers
SELECT * FROM #foo WHERE myField LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'

-- Here's everything else
SELECT * FROM #foo WHERE myField NOT LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'

Open in new window

VMware Disaster Recovery and Data Protection

In this expert guide, you’ll learn about the components of a Modern Data Center. You will use cases for the value-added capabilities of Veeam®, including combining backup and replication for VMware disaster recovery and using replication for data center migration.


Author Closing Comment

ID: 39839643
Thanks for the responses everyone.  I always forget how powerful "LIKE" can be.  

Anyway - I ended up using a combination of LEN(myField) = 7 and NOT LIKE '[0-9] ...' which may redefine what I consider a "valid" value to be (this is all discovery stage analysis).  

Thanks again everyone.  Always good to know you're there!

Author Comment

ID: 39839645
Jim!  VH fan????  :D
LVL 65

Expert Comment

by:Jim Horn
ID: 39839669
Yes, and I have a couple of sample data sets that use as customers Sammy Hagar, Eddie Van Halen, Joe Satriani, etc.

Author Comment

ID: 39839723
Hah!  That's great.  I'm a player myself and have recently started building pedals for fun.  My standard test for the sound quality of a prototype pedal has become the opening bars from Drop Dead Legs.  

Ok - that's probably enough off-topic garbage but I had to acknowledge the connection.
LVL 65

Expert Comment

by:Jim Horn
ID: 39839739
In that case check out this question but do me a favor and don't answer it right away, as I want to see how the other yahoos do.

Featured Post

What is SQL Server and how does it work?

The purpose of this paper is to provide you background on SQL Server. It’s your self-study guide for learning fundamentals. It includes both the history of SQL and its technical basics. Concepts and definitions will form the solid foundation of your future DBA expertise.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Slowly Changing Dimension Transformation component in data task flow is very useful for us to manage and control how data changes in SSIS.
For both online and offline retail, the cross-channel business is the most recent pattern in the B2C trade space.
Familiarize people with the process of utilizing SQL Server functions from within Microsoft Access. Microsoft Access is a very powerful client/server development tool. One of the SQL Server objects that you can interact with from within Microsoft Ac…
Via a live example combined with referencing Books Online, show some of the information that can be extracted from the Catalog Views in SQL Server.

895 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

15 Experts available now in Live!

Get 1:1 Help Now