2012-07-30 3 views
2

"Customers"테이블이 있는데,이 테이블에는 YAML을 저장하는 TEXT 열 "환경 설정"이 있습니다. YAML은 show_email, likes_to_partylast_changed_prefs_at과 같은 속성을 갖는 해시/사전 /지도입니다. MySQL에서이 YAML 데이터를 쿼리하는 방법이 있습니까? customers.preferences["likes_to_party"] == true의 고객을 모두 돌려 주시겠습니까?MySQL의 YAML에 대한 쿼리

내가 실제로 내가 어떤 날짜 간격에 속하는지 여부를 알고 싶습니다 직렬화 된 날짜 필드 가지고,하지만 더 복잡해진다 : 내가 처음에 정규식을 생각하고 customers.preferences["last_changed_prefs_at"].between(some_date, some_other_date) == true

을 ..하지만 꽤 해키 . SUBSTRING(), LOCATE() 나는 오히려 추한 해킹 구축 할 수 있었다 UNIX_TIMESTAMP() 사용하여

+1

이 한 번 봐 가지고 : http://sumanrs.wordpress.com/2012/02/23/yaml -to-mysql-yaml2sql-script-in-php/ – dnagirl

+0

이것은 MySQL이 아닌 PHP에서 비 직렬화에 관한 것입니다. – skinkelynet

+0

질문을 명확히 할 수 있습니까? YAML을 포함하는 텍스트 필드에 대해 SQL 쿼리를 수행하고 SQL에서이를 이해하도록하고 싶습니다. 그 질문을 감안할 때, 나는 YAML을 SQL로 변환하고 쿼리 목적으로 저장하는 것을 생각할 것이다 (출력 목적을 위해 원시 YAML을 저장할뿐만 아니라) 좋은 접근 방법 일 수있다. – dnagirl

답변

2

:

UNIX_TIMESTAMP(
    SUBSTRING(customers.preferences, 
    LOCATE(\"last_changed_prefs_at\", cusstomers.preferences) + 22, 29) 
) BETWEEN UNIX_TIMESTAMP(:period_start) AND UNIX_TIMESTAMP(:period_end)