2009-08-03 11 views
9

set @a = "1";과 같은 변수를 정의하면 다음과 같습니다. @a가 문자열이라는 것을 어떻게 알 수 있습니까?MySQL에서 변수 유형 가져 오기

+0

내가 여기 당신의 접근 방식을 얻을하지 않습니다하지만 cast를 사용하여 단지 문자열과 정수를 식별하는 방법이있다. 나는 당신이 mysql에서 변수 타입을 얻을 수 있다고 생각하지 않지만, 틀릴 수도있다. – marcgg

+0

@marcgg, 나는 그가 당신이 "무엇을 의미하는지"생각한다. – Pacerier

+0

변수가 특정 유형으로 선언되어야하기 때문에 @a가 문자열임을 이미 알고 있어야합니다. 그러나 분명히 여기에 더 많은 것이 있습니다. 이걸로 무엇을 하려니? –

답변

4

MySQL의 변수 유형을 결정할 수 없습니다.

@a = CAST(123 AS CHAR); 

더 많은 정보와 MySQL의 매뉴얼에 캐스팅에 대한 예 :

11.9. Cast Functions and Operators

+1

MySQL에서 변수의 유형을 결정할 수 있습니다. 아래 내 대답을 참조하십시오. – 5lava

10
을 대안으로

, 당신은 쉽게 당신이 원하는 유형에 변수를 CAST() 수 있습니다

MySQL에서 변수의 유형을 결정할 수 있습니다. 변수를 선택하여 테이블을 만든 다음 열 유형을 확인하십시오.

+0

올바른 데이터 형식을 반환하지 않는 것 같습니다. – Pacerier

+1

_ 보이지 않습니까? _ 좀 더 구체적으로 말씀해 주시겠습니까? 'Type' 칼럼은 내부적으로 MySQL **에 의해 표현되는 변수 타입을 반영합니다. 최소/최적 일 필요는 없습니다. 예를 들어 위의 예제에서와 같이'longtext'는 마술처럼'varchar (1)'이나'tinyint (1) '이되지 않습니다. – 5lava

+0

이것은 [다른 스레드] (http://dba.stackexchange.com/q/57363/9405)에서 언급 한대로 도청 된 것처럼 보입니다 ............... 반환 된 유형 임시 테이블에 ** 같은 유형 ** 변수에 하나입니까? 'create table foo select @ a'를했을 때 어떤 종류의 암시적인 변환이 수행 된 것 같습니다 ... 간단한 정수의 경우 longlong을 반환하고 간단한 비트 필드의 경우에는 longblob를 반환하는 이유는 무엇입니까? – Pacerier

0

MySql에서는 변수의 데이터 유형을 식별 할 수 없습니다.

set @a = "11"; 
SELECT CAST(@a AS SIGNED); // Output : 11 

set @a = "text"; 
SELECT CAST(@a AS SIGNED); // Output : 0 


set @a = "121212"; 
SELECT CAST(@a AS SIGNED); // Output : 121212 

set @a = "Mysql is open source"; 
SELECT CAST(@a AS SIGNED); // Output : 0 
관련 문제