Переменная SAS Macro с запятыми для преобразования в одинарные кавычки с запятыми
Может ли кто-нибудь помочь мне, как я могу получить макрос-переменную с одинарными кавычками.
Я получаю числа в виде значений, разделенных запятыми, из набора данных, как показано ниже:
2108008080, 2108008081, 2108888082, 2108858090, 213856345 и т. Д. Я должен передать каждую из этих записей в SQL, где условие как Phone_numbers в (¤t_macro_variable). Для этого мне нужно добавить одинарные кавычки вокруг каждого значения, поскольку столбцы Phone_numbers являются символьным полем Oracle DB.
Любая помощь высоко ценится. Я не мог получить большую помощь от сообществ SAS.
3 ответа
Вы пробовали CATQ()
функционировать? Использовать 1
модификатор для генерации одинарных кавычек. Использовать a
модификатор, чтобы получить все условия цитируются. Использовать c
модификатор для генерации запятых в качестве выходного разделителя.
%let x=2108008080, 2108008081, 2108888082, 2108858090, 213856345;
%put %sysfunc(catq(1ac,&x));
Который производит:
'2108008080','2108008081','2108888082','2108858090','213856345'
Использование PROC SQL
и select ... into
синтаксис:
/ * Построить список цитируемых телефонных номеров, разделенных запятой * / proc sql; выделите кошек ("'", phone_number, "'") в:PHONELIST через ',' из фонеданных; уволиться; / * Затем передайте его в ваш запрос Oracle... * / proc sql; выберите переменную из ora.table где телефон в (&PHONELIST); уволиться;
Функция цитаты должна делать свое дело. Вы должны просмотреть все слова в строке и добавить кавычки.
%let macroVar = %str(2108008080, 2108008081, 2108888082, 2108858090, 213856345);
data _null_;
n = count("¯oVar",",");
length
quotedword $2000.;
quotedword = "";
do i = 1 to n+1;
word = scan("¯oVar",i,",");
y = quote(compress(word));
quotedword = strip(quotedword) || "," || strip(y);
end;
quotedword = substr(quotedword,2); /* removing first comma from beginning */
call symputx("macroVarUpdated",quotedword);
run;
%put ¯oVar;
%put ¯oVarUpdated;