2011-10-23 2 views
0

나는 전화 데이터베이스를 table 4 열이 : 나는 다음과 같은거야mysql을 다른/경우 복잡한 시나리오에는

  • countrycode
  • areacode
  • phonenumber
  • extension

을 " Canonical "형식으로, 나는 국제 번호가 있기 때문에 중히 여기다.

운명으로 입력 한 일부 숫자는 확장자가 있습니다.

내가 확장자를 제외하고, 내가 자동 포맷 모든 것을 사용하는 쿼리가 있습니다

SELECT CONCAT('+',`countrycode`,'(',`areacode`,')', `phonenumber`) AS `fullnumber` ... 

결과 : +1 (123) 4567890 나 : +61 (08) 1234 1234 이 좋은 작품, 내가 수출하는 일부 전화 걸기 소프트웨어와 완벽하게 작동합니다.

그러나 이제이 쿼리에 확장명을 포함해야합니다. 그러나, 나는 이렇게 같은 자동 포맷을 수행해야합니다

+1 (123) 4567890 x123 오히려 쉽게

하지만, 대부분의 숫자가 확장을 가지고 있지 않기 때문에, 나는이 포함됩니다 조건을 확인해야합니다 char (x). 그리고 이것은 여전히 ​​나의 딜레마입니다. 왜냐하면 저는 여전히 쿼리에서 조건문을 배우고 있기 때문입니다.

누군가 CONCAT 내부에서 이상한/else 문을 사용합니까?

답변

2

의 MySQL의 IF 문은 다음과 같이 작동

IF(condition, iftrue, iffalse)을 : 주어진 조건이 참이면, iftrue 매개 변수를 반환합니다. 그렇지 않으면 iffalse 매개 변수를 반환하십시오.

SELECT CONCAT('+',`countrycode`,'(',`areacode`,')', `phonenumber`, IF(`extension` IS NULL, "", CONCAT(" x", `extension`))) AS `fullnumber ... 

MySQL의 IF 기능은 여러 제어 흐름 기능 중 하나입니다

그래서, 당신의 쿼리는 다음과 같은 것을 볼 수 있었다. 이러한 기능에 대한 자세한 내용은 MySQL docs을 참조하십시오.

+0

니스, 원래 IF()를 시도했는데 서식이 어디에 있는지 확인할 수 있습니다. 고마워요 잭! – coffeemonitor