2016-05-31 3 views
0

일부 열의 끝에 접미어 _a이 있습니다.
열에 이러한 접미어가 있는지 확인하고 싶으면 내 결과 집합에서 제거하십시오.열 이름에서 접미어를 제거하십시오.

IF(SUBSTR(column_name, -2) == "_a", SUBSTR("column_name", 0, -2)) 

그래서 그 col_acol된다 : 내가 좋아하는 무언가를 추가 할 필요가

SELECT t1.column_name FROM information_schema.Columns t1 
WHERE t1.table_name = 'myTab1' AND t1.table_schema = 'myDatabase1' 

:

이 내 쿼리입니다.

접미사를 유지해야하므로 열 이름의 이름을 완전히 바꿀 수는 없습니다.

+2

정확히하고 싶습니까? 나는 당신의 질문을 이해하지 못합니다 : 먼저 당신이 말합니다 : _ 열이 접미사를 가지고 있다면, 그것을 제거하십시오. 당신의 게시물 끝에 : _so 열 이름의 이름을 바꿀 수 없습니다 _ – vaso123

+0

@lolka_bolka : 저는 내 결과 집합에서 접미어를 제거하려고하지만 열의 이름을 바꾸고 싶지 않습니다. – user1170330

+1

코드 내에서 접미어를 제거하고 데이터베이스 측에서 유지하겠습니까? 이 내용을 올바르게 이해하고 있다면 정확히 별칭을 사용합니다 (예 :'select t1.column_name_a as column_name') – user2366842

답변

2

\은 특수 문자 _을 이스케이프합니다. 주석을 바탕으로

SELECT case when t1.column_name like '%\_a' then SUBSTRING(t1.column_name, 1, length(t1.column_name)-2) 
      when t1.column_name like '%|a' then SUBSTRING(t1.column_name, 1, length(t1.column_name)-2) 
     else t1.column_name end 
FROM information_schema.Columns t1 
WHERE t1.table_name = 'myTab1' AND t1.table_schema = 'myDatabase1' 

, 문자열 패턴이 검색되는 경우 솔루션은이 같은 것 사용 t1.column_name like '%|a'

Sample fiddle

+0

고맙습니다. '| a'와 같은 다른 접미사가 있으면 어떨까요? 단순히'_'로'_'을 변경해도 작동하지 않았습니다. – user1170330

+1

이 경우 \는 필요하지 않습니다. \는 "임의의 1 문자"를 의미하는 특수 문자'_'를 이스케이프했습니다. – xQbert

+0

@ user1170330 .. \\는 특수 문자'_'를 이스케이프 처리합니다. | 특수 문자가 아닙니다. 그래서'like'|'를 사용할 수 있습니다. –

-1

약간 덜 동적 (하지만 틀림없이 더 읽기) |a 포함해야합니다 위해 :

Select t1.column_name_a as column_name, t1.column_name2_a as t1.column_name2 
from information_schema.Columns t1 
where t1.table_name = 'myTab1' and t1.table_schema = 'myDatabase1' 

정말 동적 인 것이 필요한 경우 다른 제안 중 하나를 사용하십시오. 답변. 컬럼 이름이 일관성이 있다면, 아마도 개인적으로 본 것보다 더 표준적인 방법 일 것입니다.

관련 문제