2012-02-15 5 views
1

내 mysql 테이블에 json 데이터가 들어있는 param 필드가 있습니다. 인코딩 후 은 다음과 같습니다json 데이터에 대한 mysql 쿼리

'config.enable_comments' => string '1' 
    'metadata.description' => string '' 
    'metadata.keywords' => string '' 
    'metadata.robots' => string '' 
    'metadata.author' => string '' 
    'config.primary_category' => string '157' 

가 어떻게 config.primary_category에 예를 들어 따라 MySQL의 쿼리를 만들 수 있습니다.

SELECT params 
FROM #__zoo_item 
WHERE config.primary_category = ". $id; 
+4

것을에 추가, 'myJsonField이'(11)의 길이를 가지고 있습니다은에 나쁜 생각 이잖아 json으로 저장하십시오. 당신은 정말로 데이터베이스를 정상화해야합니다. –

+0

적절한 정규화 체계로 변경하기에는 너무 늦지 않으면 절대적으로 변경해야합니다. 이것은 당신에게 많은 두통을 일으킬 것입니다 ... –

+0

것은 하나가 joomla 구성 요소 (구매)입니다. json으로 일부 params를 저장하고 있으며 일부 항목을 트리거하려고합니다. config.primary.category id와 동일합니다. 나는 전문가가 아닌데 어쩌면 내가 뭔가 잘못하고있는 것 같아. – lgt

답변

2

1 년 후 ... 데이터베이스를 어떤 이유로 정규화 할 수없는 프로젝트에서 이러한 종류의 쿼리를 수행해야했습니다.

이 하나 개의 가능한 솔루션입니다 :

SELECT * 
FROM myTable 
WHERE if(
    instr(myField,'myJsonField'), 
    substring(
    substring(myField,instr(myField,'myJsonField')+15), 
    1, 
    instr(substring(myField,instr(myField,'myJsonField')+15),'\",\"')-1 
), 
    '' 
) = 'theJsonValue' 

JSON 형식의 분리 기호 (15)