2014-08-29 1 views
0

내가 어떤 행 행이 없으면 "텍스트 입력"을 반환하십시오. (데이터 정렬의 불법 믹스)

이없는 이들 항목에 대한 합체를 사용하기 위해 노력하고있어 나는이

SELECT 
COALESCE(t1.it, d.it_norow) 

FROM (SELECT 0 as it_norow 
     FROM DUAL) as d 
    LEFT JOIN 
     (SELECT t1.itemText as it 
     FROM bullet_items as t1 
     WHERE t1.cst_name = 'Cust' 
     AND t1.bullet_id = 'BD1') as t1 
     ON 1 = 1 

작동하지만,있어 난에서 '0'으로 변경하는 경우 듀얼 테이블

SELECT 
COALESCE(t1.it, d.it_norow) 

FROM (SELECT 'Enter text' as it_norow 
     FROM DUAL) as d 
    LEFT JOIN 
     (SELECT t1.itemText as it 
     FROM bullet_items as t1 
     WHERE t1.cst_name = 'Cust' 
     AND t1.bullet_id = 'BD1') as t1 
     ON 1 = 1 

나는 오류를 얻을 Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8mb4_general_ci,COERCIBLE) for operation 'coalesce'

더 행이 없을 때 나는 그것을 '텍스트를 입력합니다'작업을 할 수 있습니까?

+0

당신은 문제를 복제 할 수 있습니다 [*'Fiddle Demo' *] (http://sqlfiddle.com/)을 제공함으로써? –

답변

1

빠른 답변, 쿼리 수정합니다 : (. 즉 라틴 bullet_items.itemText의 characterset 가정, 그리고 클라이언트의 characterset이 UTF8이다)

SELECT _latin1'Enter text' 
     ^^^^^^^ 

다른 구문있다, 그러나 그들은 모두 본질적으로 같은 것을 성취합니다. 즉, 파생 테이블의 it_norrow 열에 latin1 문자 집합이 있습니다. 더 이상 설명이있다

(데이터베이스 열, 클라이언트의 characterset의 characterset에 대한, 그리고 characterset 사이의 변환의 의미, 캐스트 및 CONVERT 기능, 등.)

+0

와우는 간단합니다. 그것은 일했다! 감사! – sleepsleepsleep90731

관련 문제