cancel
Showing results for 
Search instead for 
Did you mean: 

Where Character Length = X

SOLVED
Dogo23
Quartz | Level 8
Solved!

Where Character Length = X

Quick question all,

 

I need Proc Sql syntax for a where statement bring back only records with a string length of 10.

 

 

I tried ths and it didn't work:

where  a.date_created >=02/20/2018
and length(account_number = 10) 

Thanks for any suggestions!

1 ACCEPTED SOLUTION

Accepted Solutions
novinosrin
Tourmaline | Level 20
Solution

Re: Where Character Length = X

where  a.date_created >=02/20/2018
and length(account_number) = 10

View solution in original post

4 REPLIES 4
novinosrin
Tourmaline | Level 20
Solution

Re: Where Character Length = X

where  a.date_created >=02/20/2018
and length(account_number) = 10
Dogo23
Quartz | Level 8

Re: Where Character Length = X

Strange! Your's matches mine so maybe there was a minor difference between what I posted and what I actually ran. This works. Thanks!

Astounding
PROC Star

Re: Where Character Length = X

In addition to the suggestion from @novinosrin that moves one of the closing parentheses:

 

  • A WHERE statement requires a semicolon, and
  • 02/20/2018 is the wrong way to refer to a date.  This actually means 2 divided by 20, divided by 2018.  Instead of 02/20/2018:

'20Feb2018'd

novinosrin
Tourmaline | Level 20

Re: Where Character Length = X

hi @Dogo23 to help you clarify a bit more, see the below demo

data h;
input var $10.;
datalines;
9999999999
99999
9999999999
8888888888
777777
888
;

data w;
set h;
length=length(var);
length2=length(var)=10;/*your were trying to compute the length of binary result which will always result in 1*/
if length(var=10) then flag=1;/*your were trying to compute the length of binary result*/
run;

Your check was a binary check nested before the length function computes it's work. The nested binary will result in 1 or 0 for values that is 10 and "Not aka 0" for otherwise. The commented section should help i think. Thank you.