programing

MySQL 5.7.27에서 REGEXP_REFACE() 대안 찾기

bestprogram 2023. 10. 24. 21:29

MySQL 5.7.27에서 REGEXP_REFACE() 대안 찾기

작업 중인 프로젝트 중 하나에 대해 다음과 같은 질문을 했습니다(On MariaDB 10.1.37).

SELECT * FROM table WHERE REGEXP_REPLACE(substring_index(product,' ',1), '[^a-zA-Z ]', '')='VALUE'

목표는 다음과 같습니다.

1) from value select part to first space: 예제VALUE1 SOME OTHER갖기 위해VALUE1
2) 숫자와 다른 기호를 제거하려면: 예제VALUE1갖기 위해VALUE
그리고 위의 쿼리는 필요에 따라 효과를 발휘합니다!

문제는 클라이언트 측에 MySQL 5.7.27이 있고 우리가 알고 있듯이 REGEXP_REFACE()가 8+ 버전의 MySQL에 들어왔다는 것입니다.

지금은 클라이언트를 MySQL 8+로 업그레이드하거나 MariaBD로 마이그레이션할 수 있는 옵션이 없으므로 MySQL 5.7.27에서 동일한 결과를 어떻게 얻을 수 있는지가 문제입니다.

나는 검색을 시도했고 시도했습니다.WHERE substring_index(product,' ',1) REGEXP '^a-zA-Z' = 'VALUE'하지만 REGEXP는 1 또는 0을 반환하며, 가치가 필요하기 때문에 제게 적합한 것은 아닙니다. …

도와줄 사람?

미리 감사드립니다!

제 동료들이 MYSQL 5.5에 있기 때문에 REGEXP_REFACE()도 없기 때문에 해결책을 찾고 있었습니다.

stackOverFlow에서 한 개의 char만 교체할 수 있는 솔루션을 쉽게 찾을 수 있지만 문자열을 찾을 수 없어 이 코드를 만들었습니다. 누군가에게 도움이 될 수 있습니다.

SET @string = 'I love shop it is a terrific shop, I love eveything about it';
SET @shop_code = 'shop';

SET @shop_date = CONCAT(@shop_code, '__', DATE_FORMAT(NOW(), '%Y_%m_%d__%Hh%im%ss'));

SET @part1 = SUBSTRING_INDEX(@string, @shop_code, 1);

SET @shop_nb = ROUND( (LENGTH(@string) - LENGTH(REPLACE(@string, @shop_code,''))) / LENGTH(@shop_code) );

SET @part2 = SUBSTRING_INDEX(@string, @shop_code, -@shop_nb);

SET @string = CONCAT(@part1, @shop_date, @part2);

SELECT @string;

이것은 최종적인 답변이 아니며, 만약 누군가가 제가 질문한 것에 대한 좋은 또는 더 가까운 예를 가지고 있다면, 먼저 가서 답변을 게시하세요.저는 그것을!

제가 한 것은 그냥 사용한 것입니다.LIKE

SELECT * FROM table WHERE substring_index(product,' ',1) LIKE 'VALUE%'

어떤 경우에는 잘못된 데이터를 보여줄 수도 있다는 것을 알고 있지만, 제가 필요로 하는 이 방법은 받아들일 수 있습니다.

MySQL 5.7에서 작동합니다.다음 예는 URL의 쿼리 문자열에서 UTM_Source 매개 변수 값을 추출하는 것입니다.

 case when url like '%utm_source%' then
       substring(
       url,
      locate('utm_source=',url)+char_length('utm_source='),
      case when locate('&',url,locate('utm_source=',url)) = 0 then char_length(url)+1 else locate('&',url,locate('utm_source=',url)) end - (locate('utm_source=',url)+char_length('utm_source=')) 
      ) else NULL end utm_source; 

언급URL : https://stackoverflow.com/questions/59319704/looking-for-regexp-replace-alternative-on-mysql-5-7-27