json 형식의 데이터베이스 열에 데이터가 있습니다. pSpecialPrice가있을 곳이 "1"이 될 쿼리를 작성하고 싶습니다. 데이터베이스에서만 해당 제품을 가져옵니다.
쿼리를 작성했지만 작동하지 않습니다 ..
여기 테이블에 json 형식의 데이터가 있습니다.
{"pName":"BB8GB OTG USB Flash Drive for Smart Phone/Tablet PC Rose Red","pID":"1","pSKU":"81010229","pShortDescp":"BB8GB OTG USB Flash Drive for Smart Phone/Tablet PC Rose Red","pLongDescp":"BB8GB OTG USB Flash Drive for Smart Phone/Tablet PC Rose Red","pURL":"8gb-otg-usb-flash-drive-for-smart-phone-tablet-pc-rose-red","pCountry":"","pStatus":"1","pPrice":"9.99","pspecialPrice":"1","pDiscount":"25","pspDate":"11/11/2015","pDealDisc":"","pdealDate":"","pmetaTitle":"8GB OTG USB Flash Drive for Smart Phone/Tablet PC Rose Red","pmetaDescp":"8GB OTG USB Flash Drive for Smart Phone/Tablet PC Rose Red","pmetakeys":"8GB OTG USB Flash Drive for Smart Phone/Tablet PC Rose Red","pImgLabel":"8GB OTG USB Flash Drive for Smart Phone/Tablet PC Rose Red","pStock":"26","pproStatus":"1","pLimitPerson":"5","product-color":"Blue","submit":"Submit"}
내가 쓴 쿼리 :
SELECT * FROM `Table_Name` WHERE `Column Name` IN ("pspecialPrice":"1")
누구든지이 문제를 해결하는 데 도움이 될 수 있습니까 ..
미리 감사드립니다 ..
우선, 당신은 그것을 원하지 않아야합니다. JSON을 구문 분석하고 일부 관계형 테이블에 내용을 저장하는 것이 좋습니다. 그러나 아키텍처를 변경할 수 없거나 여전히 필요하다면 LIKE
.
SELECT * FROM `Table_Name` WHERE `Column Name` LIKE '%"pspecialPrice":"1"%'
UPD>
이 구조를 사용하여 JSON 데이터를 테이블에 넣는 것이 더 낫다고 생각합니다 json_values
. 예를 들어 다음 과 같이 호출 해 보겠습니다.
tab_id name value
1 pName BB8GB OTG USB Flash Drive
1 pspecialPrice 1
어디 tab_id
테이블에서 기본 키이며, name
JSON 데이터로부터 키이고 value
에서 값입니다 JSON
. 당신은 필드에 인덱스를 추가해야합니다 name
및 value
이 테이블에서. 다음과 같은 항목을 찾을 수 있습니다.
SELECT *
FROM `Table_Name` t
WHERE EXISTS (SELECT 1
FROM `json_values` v
WHERE t.id = v.tab_id
AND v.name = 'pspecialPrice'
AND v.value = '1')
이 솔루션은 훨씬 더 빠르고 확장 가능하며 모든 필드를 추가 할 수 있으며 일반 SQL 쿼리를 사용하여 항목을 검색 할 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다