Закрывающая скобка в mysql запросе
Добавлено: 09 сен 2014, 12:57
Добрый день.
Задача реализовать обратный дозвон. Направить входящий извне вызов(определяем номер aon), абоненту asterisk, если он набирал его.
Задача решена, но есть проблема. Если абонент asterisk вызывал 7-значный номер ГТС то определитель номера покажет телефонный номер полностью (код_города)ХХХХХХХ и соответственно совпадение при поиске в БД не будет найдено.
Текущей вариант:
exten => s,n,MySQL(Query resultid ${connid} SELECT src FROM cdr WHERE dst='8${aon}' AND calldate > "${now}" - INTERVAL 5 HOUR ORDER BY calldate DESC LIMIT 1;)
Тогда я решил проводить поиск вызываемого номера по правым 7 знакам, вот таким запросом mssql:
mysql> set @num=12345678901
mysql> SELECT src FROM cdr WHERE dst LIKE CONCAT ('%',RIGHT(@num,7)) ORDER BY calldate DESC LIMIT 1;
+------+
| src |
+------+
| 3085 |
+------+
1 row in set (0.00 sec)
Как видно скрип работает в mssql.
Однако при переносе в extension.conf правило не срабатывает:
exten => s,n,MySQL(Query resultid ${connid} SELECT src FROM cdr WHERE dst like CONCAT ('%' , RIGHT(${aon} , 7)) AND calldate > "${now}" - INTERVAL 5 HOUR ORDER BY calldate DESC LIMIT 1;)
Лог:
-- Executing [s@dropme:6] MYSQL("Dongle/mir-01000000ed", "Query resultid 1 SELECT src FROM cdr WHERE dst like CONCAT ('%' , RIGHT(номер_тел , 7)") in new stack
[Sep 9 12:47:49] WARNING[18374]: app_mysql.c:393 aMYSQL_query: aMYSQL_query: mysql_query failed. Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
Из лога видно что команда обрывается после первой закрывающей скобки. Она воспринимается как скобка закрывающая плавило extension.
Экранизация обратным слэшем(\) не помогает. Как обойти данное ограничение?
Задача реализовать обратный дозвон. Направить входящий извне вызов(определяем номер aon), абоненту asterisk, если он набирал его.
Задача решена, но есть проблема. Если абонент asterisk вызывал 7-значный номер ГТС то определитель номера покажет телефонный номер полностью (код_города)ХХХХХХХ и соответственно совпадение при поиске в БД не будет найдено.
Текущей вариант:
exten => s,n,MySQL(Query resultid ${connid} SELECT src FROM cdr WHERE dst='8${aon}' AND calldate > "${now}" - INTERVAL 5 HOUR ORDER BY calldate DESC LIMIT 1;)
Тогда я решил проводить поиск вызываемого номера по правым 7 знакам, вот таким запросом mssql:
mysql> set @num=12345678901
mysql> SELECT src FROM cdr WHERE dst LIKE CONCAT ('%',RIGHT(@num,7)) ORDER BY calldate DESC LIMIT 1;
+------+
| src |
+------+
| 3085 |
+------+
1 row in set (0.00 sec)
Как видно скрип работает в mssql.
Однако при переносе в extension.conf правило не срабатывает:
exten => s,n,MySQL(Query resultid ${connid} SELECT src FROM cdr WHERE dst like CONCAT ('%' , RIGHT(${aon} , 7)) AND calldate > "${now}" - INTERVAL 5 HOUR ORDER BY calldate DESC LIMIT 1;)
Лог:
-- Executing [s@dropme:6] MYSQL("Dongle/mir-01000000ed", "Query resultid 1 SELECT src FROM cdr WHERE dst like CONCAT ('%' , RIGHT(номер_тел , 7)") in new stack
[Sep 9 12:47:49] WARNING[18374]: app_mysql.c:393 aMYSQL_query: aMYSQL_query: mysql_query failed. Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
Из лога видно что команда обрывается после первой закрывающей скобки. Она воспринимается как скобка закрывающая плавило extension.
Экранизация обратным слэшем(\) не помогает. Как обойти данное ограничение?