programing

정수(id)를 텍스트 문자열에 매핑하시겠습니까?

css3 2023. 9. 17. 13:25

정수(id)를 텍스트 문자열에 매핑하시겠습니까?

데이터베이스에 "type"이라는 필드를 작은 크기로 저장하고 있습니다.제가 종류가 많지 않기 때문에 이 모든 종류의 이름을 저장할 수 있는 테이블을 만들지 않기로 했습니다.

테이블을 조회할 때 pph 배열에 저장하고 있는 해당 이름으로 유형을 대체했으면 합니다.결과를 루프하여 반환된 결과 행을 대체하는 대신 sql 문 자체 내부에서 이러한 대체를 수행할 수 있는 방법이 있는지 궁금합니다.

이와 같은 것이 존재합니까?

select *, map(type, {1=>'abc', 2 => 'xyz'}) from orders

이것을 할 수 있는 유일한 방법은 (확실히) 다음과 같은 구조물을 사용하는 것입니다.

SELECT *, CASE type WHEN 1 THEN 'abc' WHEN 2 THEN 'xyz' END as stringType
FROM orders

사용할 수도 있습니다.ELSE기본값을 지정하는 절(예:CASE type WHEN 1 THEN 'abc' WHEN 2 THEN 'xyz' ELSE 'unknown' END.

사실, mathematical.coffee에 의한 답과는 대조적으로, MySQL에는 숫자를 텍스트에 매핑하는 또 다른 방법이 있습니다 - 적어도 숫자가 연속적이라면:

ELT()function 은 문자열 목록의 N번째 요소를 반환합니다.str1한다면N = 1,str2한다면N = 2, 등등.돌아온다NULLN이 1보다 작거나 인수 수보다 클 경우.

예:

mysql> SELECT ELT(1, 'ej', 'Heja', 'hej', 'foo');
        -> 'ej'
mysql> SELECT ELT(4, 'ej', 'Heja', 'hej', 'foo');
        -> 'foo'

출처:

https://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_elt

언급URL : https://stackoverflow.com/questions/9140107/map-integerid-to-text-string