2016-07-20 2 views
0

"number"와 "form"이라는 2 개의 필드가있는 데이터베이스가 있으며 일부 필드를 변경해야합니다.데이터베이스의 필드를 업데이트하는 MySqli

값이 1234.5, 1233.7 인 Excel 목록에 1234가 번호이고 5가 내 테이블의 양식 번호입니다. 내가 보는 첫 번째 문제는 내가이 "수"가 때이 동일하지만 서로 다른 "형태"숫자입니다

$sql = "UPDATE `table` SET `field`='value' WHERE `number` IN (1234,1233) AND `form` IN (5,7)"; 

:

은 가능한 그런 짓을하는 것입니다.

또는 내가 좋아하는 뭔가를 할 수 있습니다

$sql = "UPDATE `table` SET `field`='value' WHERE CONCAT(number,'.',form) IN (1234.5,1233.7)"; 

그래서이 접근 할 수있는 다른 방법이 있습니까?

감사합니다.

+2

'IN (1234.5, ...')을'IN ('1234.5', '1233.7')'문자열로 넣어야합니다. 그렇지 않으면 부동 소수점으로 간주되어 부동 소수로 간주됩니다. concat()가 STRING을 반환 할 것이기 때문에 제대로 작동합니다. –

+0

@Mark 주석으로 두 번째가 가능하기 때문에 값을 float이 아닌 string으로 만들면됩니다. – naviciroel

답변

0

나는 당신이 성취하고자하는 것이 정확히 무엇인지 모르지만, 숫자가 다른 것처럼 들립니다. "."의 POSITION()을 찾아보십시오. 번호에. 그런 다음 해당 위치에서 SUBSTRING()을 수행하십시오. 너무과 같습니다. ""

$sql = 
"UPDATE `table` 
SET `field`='value' 
WHERE number = SUBSTRING(input, 1, POSITION('.', input) - 1) 
     AND form = SUBSTRING(input, POSITION('.', input) + 1)"; 

다음 코드는 후, 다음 폼 전에 번호를 확인합니다. "".

0

감사합니다 마크 B

$sql = "UPDATE `table` SET `field`='value' WHERE CONCAT(number,'.',form) IN ('1234.5','1233.7')"; 

이 일을 단지 대신 IN (1234.5,1233.7)

의 응답에 대한

감사를 IN ('1234.5', '1233.7')을 필요!

관련 문제