SQL проблема с использованием как - PullRequest
0 голосов
/ 24 сентября 2019

Я пытаюсь написать макрос, который будет искать текстовую строку в столбце.Я попытался выполнить следующие действия для отладки макроса SAS, но он не работает.

%let string = hello

Proc sql;
Create table abc.&string. as
From abc.source
Where column like '%'&string.'%';
Quit;

Я пропустил строку выбора переменных, поскольку она была неактуальной.

Сообщение об ошибке

error: invalid date/time/date time constant '%' h

Я думаю, что мне не нравится способ, которым я вызываю определенную строку.Я думаю, '%'&string.'%' не правильный синтаксис.

Есть идеи, что я делаю неправильно?

Ответы [ 2 ]

0 голосов
/ 25 сентября 2019

Используйте %nrstr для маскировки символа вызова макроса (%).Это может быть помещено в двойные кавычки, чтобы разрешить строковую макропеременную.Второй % для отслеживания любого совпадения не нужно маскировать, поскольку его следующий символ - ", который не будет вызывать попытку вызова макроса.

%let string = an;

proc sql;
  create table an_students as
  select * from sashelp.class
  where name like "%nrstr(%%)&string%";
  ;

Или просто используйте containsоператор

  where name contains "&string"
0 голосов
/ 24 сентября 2019

Ваше предложение "лайк" не работает, можете попробовать ниже

    %let string = 'hello' 

       Proc sql;
      Create table cats('abc', &string)  
          as
        From abc.source
       Where column like 
      cats('%', &string, '%') ;
         Quit;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...