복붙노트

[SQL] 어떻게 MySQL의에서 슬래시 (\)를 검색하려면? (\) 이스케이프 왜 요구되는 경우 (=)하지만처럼을 위해 필요하지?

SQL

어떻게 MySQL의에서 슬래시 (\)를 검색하려면? (\) 이스케이프 왜 요구되는 경우 (=)하지만처럼을 위해 필요하지?

(DEMO는 여기)이 질의를 고려

(SELECT * FROM `titles` where title = 'test\\')
UNION ALL
(SELECT * FROM `titles` where title LIKE 'test\\\\')

산출:

| ID | TITLE |
--------------
|  1 | test\ |
|  1 | test\ |

왜에 필요한 여분의 (\)는 (=)하지만 대한 \\ 추가 (같은)이 필요하지 않습니다? 그 MySQL은 LIKE에 대한 논리적 (시험 \\) 다음 (테스트를 \\\\)를 사용하여 함께 (테스트 \) 이스케이프 분명히있다.

표 정보 :

CREATE TABLE IF NOT EXISTS `titles` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;

--
-- Dumping data for table `titles`
--

INSERT INTO `titles` (`id`, `title`) VALUES
(1, 'test\\');

해결법

  1. ==============================

    1.\ 기본적으로 LIKE에 이스케이프 문자로 작동합니다.

    \ 기본적으로 LIKE에 이스케이프 문자로 작동합니다.

    LIKE에 대한 매뉴얼에서 :

    당신은 같이 다른 이스케이프 문자를 지정하여 변경할 수 있습니다 :

    SELECT * FROM `titles` where title LIKE 'test\\' ESCAPE '|'
    
  2. ==============================

    2.사실, 이전의 모든 대답은 어딘가에 엉망이되었다. 당신은 누구의 최상위 비트 폭발 약 1 백 슬래시 (\)를 검색하는 올바른 방법에 의해 재생 카 롤리 호 바스에 의해 제공된 링크에서 볼 수 있듯이 (\\\\) 한 번에 4 백 슬래시를 사용하는 것입니다.

    사실, 이전의 모든 대답은 어딘가에 엉망이되었다. 당신은 누구의 최상위 비트 폭발 약 1 백 슬래시 (\)를 검색하는 올바른 방법에 의해 재생 카 롤리 호 바스에 의해 제공된 링크에서 볼 수 있듯이 (\\\\) 한 번에 4 백 슬래시를 사용하는 것입니다.

    그건 그렇고, 내가 한 번에 두 가지를 사용하고 내가 팔을 사용했다 그 4를 표시했다가 단일 백 슬래시 위에 표시합니다.

  3. ==============================

    3.LIKE 두 wildchar 문자 % 및 _를 사용할 수 있습니다.

    LIKE 두 wildchar 문자 % 및 _를 사용할 수 있습니다.

    \ %를, \ _ : 사용할 수있는 탈출, 이러한 문자를 일치시킬 수 있습니다. 이것은 또한 당신이 \ 일치 할 경우, 그것은뿐만 아니라 이스케이프한다는 것을 의미한다.

    이 모든 매뉴얼에 설명되어 있습니다.

  4. ==============================

    4.텍스트 필드 내에서 \를 찾는 나는 \ 두 번, 마지막에 그렇지 않으면 %가 발견 된 탈출했다 :

    텍스트 필드 내에서 \를 찾는 나는 \ 두 번, 마지막에 그렇지 않으면 %가 발견 된 탈출했다 :

    SELECT * FROM `table` where `field` LIKE '%\\\%';
    
  5. ==============================

    5.당신은 (\ ') (의 데이터베이스 열 테스트 \)에서'제거하고 apostrophy로 교체하고 싶었다면 (시험의) 당신은 다음 쿼리를 사용할 수 있습니다.

    당신은 (\ ') (의 데이터베이스 열 테스트 \)에서'제거하고 apostrophy로 교체하고 싶었다면 (시험의) 당신은 다음 쿼리를 사용할 수 있습니다.

    SELECT replace(column_name, "\\'", "'") FROM table where column_name  LIKE "%\\\%";
    
  6. from https://stackoverflow.com/questions/14926386/how-to-search-for-slash-in-mysql-and-why-escaping-not-required-for-wher by cc-by-sa and MIT license