source

regexp 파라미터로 SELECT를 수신하면 교대로만 작동합니다(홀수 시간만).

ittop 2023. 9. 4. 20:39
반응형

regexp 파라미터로 SELECT를 수신하면 교대로만 작동합니다(홀수 시간만).

이 절차가 왜 이런 동작을 하는지 설명할 수 있는 사람이 있습니까? (1일, 3일, 5일에만 작동...시간)?

MariaDB [mydatabase]> CALL StrangerThings();
+-----------------+
| address         |
+-----------------+
| Prefix          |
| Prefix > Suffix |
+-----------------+
2 rows in set (0.001 sec)

Query OK, 0 rows affected (0.001 sec)

MariaDB [mydatabase]> CALL StrangerThings();
Empty set (0.000 sec)

Query OK, 0 rows affected, 3 warnings (0.000 sec)

MariaDB [mydatabase]> CALL StrangerThings();
+-----------------+
| address         |
+-----------------+
| Prefix          |
| Prefix > Suffix |
+-----------------+
2 rows in set (0.001 sec)

Query OK, 0 rows affected (0.001 sec)

MariaDB [mydatabase]> CALL StrangerThings();
Empty set (0.000 sec)

Query OK, 0 rows affected, 3 warnings (0.000 sec)

MariaDB [mydatabase]> SHOW WARNINGS;
+---------+------+------------------------------------+
| Level   | Code | Message                            |
+---------+------+------------------------------------+
| Warning | 1139 | Regex error 'NULL argument passed' |
| Warning | 1139 | Regex error 'NULL argument passed' |
| Warning | 1139 | Regex error 'NULL argument passed' |
+---------+------+------------------------------------+
3 rows in set (0.000 sec)
CREATE PROCEDURE `StrangerThings`()
BEGIN

    SELECT p1.address
    FROM (
        SELECT 'Prefix' as 'address' UNION 
        SELECT 'Prefix > Suffix'  as 'address' UNION 
        SELECT 'Another Prefix > Suffix > Last'  as 'address'
    ) p1
    WHERE
--      p1.address regexp ('^Prefix');
        p1.address regexp (SELECT ('^Prefix'));

END

이 줄을 바꿀 경우p1.address regexp (SELECT ('^Prefix'));이번에는p1.address regexp ('^Prefix');잘 작동하고 매번 동일한 예상 결과를 출력합니다.

중요 참고 사항:

  • Percona XtraDB 클러스터를 사용하여 예상대로 작동합니다(그러나 MariaDB에서 실행하려면 필요합니다).
  • RLIKE 함수는 regexp와 동일한 결과를 출력합니다.
  • CentOS 7에서 실행 중인 10.5.5-MariaDB 로그
  • 여기서 이 관련 질문을 보았지만 답이 없기 때문에 새로운 질문을 만드는 데 더 많은 정보를 넣으려고 했습니다.

언급URL : https://stackoverflow.com/questions/64144853/regexp-receiving-select-as-param-only-works-alternately-only-odd-times

반응형