Vissa kommentarer har föreslagit att du lämnar den i JSON-format och lagrar den i en textkolumn.
Jag skulle föreslå att om du har kontroll över ditt schema bör du lagra det i två NUMERIC
fält - ett för latitud och ett för longitud. I grund och botten är det den data du har. Det faktum att du har tagit emot det med JSON som containerformat är irrelevant för själva data.
Om du lagrar det som en latitud och en longitud är det enklare att fråga efter det, och du kan fortfarande återskapa JSON senare om du vill... men om du till slut vill hämta det inte som JSON kommer du att ha en mycket bättre position att göra det. Det betyder också att du inte binder dig till JSON mot framtida ändringar.
Personligen tycker jag att det alltid är en bra idé att mentalt separera datas inneboende natur från hur du råkar ta emot den. Lagra data i vilket format som helst som är idiomatiskt för den lagringen - så om du lagrar ett nummer, använd en av de numeriska datatyperna. Om du lagrar ett datum och en tid, använd datetime
, etc. På så sätt får du inte ett extra lager mellan dig och själva data varje gång du vill komma åt den.
Detta tillvägagångssätt innebär också att du är mycket mer benägen att upptäcka dålig data tidigt - om du bara lagrar JSON direkt utan att analysera den först, kan du senare upptäck att latitud eller longitud inte är ett giltigt tal. Heck, det faktum att dina exempeldata ibland har lon
och har ibland lng
föreslår att du ändå ska göra lite datarensning.