2017-12-29 28 views
-2

열 10 자리 값이 Column A = 11111000과 같이 나타나면 sql에서이 값을 (List,Add,Edit,Delete,Export)처럼 표시하는 방법.SQL에서 필요에 따라 열 값 표시

첫 번째 위치에 1이 있으면 조건이 표시됩니다. 두 번째 위치에 1이 표시되면 추가, 세 번째 위치에는 1, 두 번째 위치에는 편집, 네 번째 위치에는 1, 다음에는 삭제, 다섯 번째 위치에는 1이 있습니다. 값이 문자열 인 경우

+0

언급을 따라 쿼리를 업데이트하고 당신이 그것을 분석 할 필요가있다. 여러 가지 방법으로 [this post] (https://stackoverflow.com/q/16403872/1324345)를 사용해보십시오. – alroc

+0

열의 유형은 무엇입니까? 정수 또는 문자열? –

+0

열 A는 Sql_variant 유형 –

답변

0

을 수행 할 수 있습니다 :

select stuff(((case when substring(a, 1, 1) = 1 then ',List' else '' end) + 
       (case when substring(a, 2, 1) = 1 then ',Add' else '' end) + 
       . . . 
      ), 1, 1, '') 

을 논리가 비트 연산자에 대한 유사합니다

select stuff(((case when a & 2^9 then ',List' else '' end) + 
       (case when 2 & 2^8 then ',Add' else '' end) + 
       . . . 
      ), 1, 1, '') 
0

어쩌면 하위 문자열 함수는이 값을 식별하는 데 도움이 될 수

select 
    id, ColumnA, 
    case when substring(ColumnA,1,1) = '1' then 'X' end as List, 
    case when substring(ColumnA,2,1) = '1' then 'X' end as [Add], 
    case when substring(ColumnA,3,1) = '1' then 'X' end as Edit, 
    case when substring(ColumnA,4,1) = '1' then 'X' end as [Delete], 
    case when substring(ColumnA,5,1) = '1' then 'X' end as [Export] 
from Table1 

enter image description here

,

은 어떻게 당신이하는 비트 마스크입니다

select 
    id, ColumnA, 
    stuff(
    case when substring(ColumnA,1,1) = '1' then ',List' else '' end + 
    case when substring(ColumnA,2,1) = '1' then ',Add' else '' end + 
    case when substring(ColumnA,3,1) = '1' then ',Edit' else '' end + 
    case when substring(ColumnA,4,1) = '1' then ',Delete' else '' end + 
    case when substring(ColumnA,5,1) = '1' then ',Export' else '' end 
    ,1,1,'' 
    ) 
from Table1 

enter image description here

+0

실제로 원하는 출력 (목록, 추가, 편집, 삭제, 내보내기) –

+0

안녕하세요 @PAL, 두 번째 쿼리를 추가했습니다. 확인하십시오. – Eralper

+0

덕분에 @ Eralper, 잘 작동합니다. –