sourcecode

MariaDB에서 CONCAT()와 WHERE를 결합하는 방법

copyscript 2022. 11. 27. 21:23
반응형

MariaDB에서 CONCAT()와 WHERE를 결합하는 방법

다른 쿼리의 결과를 사용하여 열 이름을 지정하고 싶습니다.이것을 위해 나는 사용하는 것을 좋아한다.CONCAT(). 그러나 이 행은 동작하지 않습니다.이 행을 실행하면 0 행이 반환됩니다.

SELECT * FROM cover WHERE CONCAT('c','9') = 1;

사용하지 않을 때CONCAT()완벽하게 동작합니다.

SELECT * FROM cover WHERE c9 = 1;

그리고 또CONCAT()효과가 있는 것 같아요.이것으로 나는 결과를 얻을 수 있다.

SELECT CONCAT('c','9');

저는 이 질문에서 모든 솔루션을 시도했습니다.CONCAT 조건으로 MySQL 선택

이것처럼, 하지만 난 항상 0줄을 돌려받았어.

SELECT * FROM (
  SELECT id, CONCAT('c', '9') as target 
  FROM cover) base 
WHERE target = "1"

MySQL 버전은 10.1.16-Maria입니다.DB

배열이 여러 열에 분산되는 것은 잘못된 스키마 설계입니다.그리고 지금 보시는 것처럼 기둥을 사용하는 것은 어렵습니다.를 위해 다른 테이블을 만듭니다.c가치.

아니면...

0/1 "열"이 많을 경우 다음을 고려하십시오.SET또는BIGINT UNSIGNED; 둘 중 하나는 공간의 극히 일부에 최대 64개의 부울 플래그를 보유합니다.그리고, 다른 코드로,BLOB사용할 수 있습니다.

에서 비트 22를 추출하려면BIGINT,((col >> 22) & 1)0 또는 1이 됩니다.

를 사용하는 것을 검토하다case when옵션의 수는 사전에 알고 있기 때문에(기존의 컬럼에만 액세스 할 수 있습니다).

SELECT id 
FROM   cover 
WHERE  case ? 
           when 1 then c1
           when 2 then c2
           when 9 then c9
       end = 1

...여기서 물음표는 제공된 값입니다(예: 9).

언급URL : https://stackoverflow.com/questions/45909626/how-to-combine-concat-and-where-in-mariadb

반응형