Mysql이 열을 분할 할 수 있습니까?
쉼표로 구분 된 데이터가있는 열이 있습니다.
1,2,3
3,2,1
4,5,6
5,5,5
CSV는 각 값을 식별 적으로 쿼리하는 검색을 실행합니다.
0<first<5 and 1<second<3 and 2<third<4
모든 쿼리를 반환하고 직접 분할하고 직접 수있는 것을 알았습니다. mysql이 처리 작업을 수행하도록 이렇게하는 방법이 있는지 궁금합니다. 감사합니다!
사용하다
substring_index(`column`,',',1) ==> first value
substring_index(substring_index(`column`,',',-2),',',1)=> second value
substring_index(substring_index(`column`,',',-1),',',1)=> third value
당신의 절에서.
SELECT * FROM `table`
WHERE
substring_index(`column`,',',1)<0
AND
substring_index(`column`,',',1)>5
작동하는 것입니다.
substring_index ( substring_index ( context,',',1 ), ',', -1) )
substring_index ( substring_index ( context,',',2 ), ',', -1) )
substring_index ( substring_index ( context,',',3 ), ',', -1) )
substring_index ( substring_index ( context,',',4 ), ',', -1) )
1st 값, 2nd, 3rd 등을 의미합니다.
설명 :
내부 substring_index
는 쉼표로 구분 된 처음 n 개의 값을 반환합니다. 따라서 원래는 "34,7,23,89"이면 "34,7,23"을 substring_index( context,',', 3)
반환합니다.
외부는 substring_index
내부에 의해 반환 된 값을 사용 substring_index
하고는 -1
마지막 값을 값 수 있습니다. 그러므로 "34,7,23"에서 "23"을 얻습니다. 를 지정
하는 대신 마지막 두 값을 사용이 표시됩니다.-1
-2
예 :
select * from MyTable where substring_index(substring_index(prices,',',1),',',-1)=3382;
다음 prices
은의 열 이름입니다 MyTable
.
일반적으로 substring_index 는 원하는 작업을 수행합니다.
mysql> select substring_index("foo@gmail.com","@",-1);
+-----------------------------------------+
| substring_index("foo@gmail.com","@",-1) |
+-----------------------------------------+
| gmail.com |
+-----------------------------------------+
1 row in set (0.00 sec)
MySQL REGEXP 또는 LIKE를 사용하여 원하는 것을 얻을 수 있습니다.
이에 대한 부록으로 다음과 같은 형식의 호스트가 있습니다. 일부 단어 303
어깨의 꼬리에서 숫자 부분을 분리하고 싶습니다. 이 가능한 가능성을 제안합니다.
http://lists.mysql.com/mysql/222421
그러나 문제는 정규 일치의 시작 안전가 아니라 "예, 일치합니다"라는 대답 만 대답 수 있습니다.
다음은 관련 질문에 게시 한 또 다른 변형입니다. REGEX
당신이 범위를 벗어나면 체크 그래서 테이블에있을 것, 유용 할 수 있습니다.
SET @Array = 'one,two,three,four';
SET @ArrayIndex = 2;
SELECT CASE
WHEN @Array REGEXP CONCAT('((,).*){',@ArrayIndex,'}')
THEN SUBSTRING_INDEX(SUBSTRING_INDEX(@Array,',',@ArrayIndex+1),',',-1)
ELSE NULL
END AS Result;
SUBSTRING_INDEX(string, delim, n)
처음 n을 반환합니다.SUBSTRING_INDEX(string, delim, -1)
마지막 만 반환REGEXP '((delim).*){n}'
n 개의 구분 기호가 있음을 확인합니다 (즉, 경계에 있음).
작동 중입니다 ..
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(
SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(col,'1', 1), '2', 1), '3', 1), '4', 1), '5', 1), '6', 1)
, '7', 1), '8', 1), '9', 1), '0', 1) as new_col
FROM table_name group by new_col;
참조 URL : https://stackoverflow.com/questions/1096679/can-mysql-split-a-column
'ProgramingTip' 카테고리의 다른 글
Maven은 SSH를 사용하여 로컬 파일을 원격 서버에 복사합니다. (0) | 2020.12.30 |
---|---|
int []를 byte []로 변환하는 방법 (0) | 2020.12.30 |
gemspec에서 최소 Ruby 버전을 어떻게 지정합니까? (0) | 2020.12.30 |
_id의 mongodb 정렬 순서 (0) | 2020.12.30 |
이 장치에서 실행 가능한 지원되는 아키텍처가있는 대상을 선택하십시오. (0) | 2020.12.30 |