create table want as
select CASE WHEN SUBSTR(NUMERO_TELEFONO,1,2) ='34'
OR SUBSTR(NUMERO_TELEFONO,1,3) ='+34' THEN '+34'
ELSE ' '
END as prefix length=6
from ...
我的第一个想法是:sas数据集长度用空格定义$6列。例如,您可以在这个输出中查看newvariabletest列,您将看到加上“x”append for six“”,但您不需要定义它。因此,可以使用dataset并定义准备好的结果列长度。 例子:
data test;
NUMERO_TELEFONO="343017236182";output;
NUMERO_TELEFONO="363017236182";output;
run;
data test;
set test;
length newVariable $6;
length newVariabletest $7;
if SUBSTR(NUMERO_TELEFONO,1,2) ='34' OR SUBSTR(NUMERO_TELEFONO,1,3) ='+34'
then newVariable='+34';
/*for the test*/
newVariabletest=newVariable||"X";
run;
3条答案
按热度按时间nqwrtyyt1#
在sas中,字符值用空格右填充到变量的length属性。
我猜你在用
LENGTH
函数检查值中的字符数。这个LENGTH
sas中的函数返回值中的字符数,直到值中的最后一个空格为止。使用LENGTHC
检查变量或结果的长度属性。字符变量不能是包含0个字符的空字符串,表达式
''
在数据步长变量求值的上下文中扩展到一个空间。在sas中没有空字符串的概念(例如在c中)。基本sas没有在数据库系统中找到的varchar概念(注意:proc ds2在执行期间不理解varchar)例子:
检查仅由空格组成的字符串的计算方式。对于空白赋值的情况
else
注意标记结果总是1
不管比较字符串文本中有多少空格。hec6srdp2#
sas字符变量的长度是固定的,并用空格填充。定义变量时可以使用length=属性来设置长度,不需要计算在else子句中键入的空格数。
axzmvihb3#
我的第一个想法是:sas数据集长度用空格定义$6列。例如,您可以在这个输出中查看newvariabletest列,您将看到加上“x”append for six“”,但您不需要定义它。因此,可以使用dataset并定义准备好的结果列长度。
例子: