регистрозависимые запросы для Socrata SoQL - PullRequest
1 голос
/ 23 мая 2019

Я пытаюсь найти все смешанные результаты.

Например, «Abee» вернется только при поиске именно этого случая.

Я посмотрел в параметре как '...' и попробовал верхний (но, похоже, для возврата, а не для запроса).

Это рабочий запрос, который я передаю.

https://data.nasa.gov/resource/gh4g-9sfh.json?$where=name%20like%20%27%25Abee%25%27

В моем приложении React это функция:

App.js

onChangeSearch = async (e) => {
    e.preventDefault(); 
    const name = e.target.elements.name.value;
    console.log('name: '+ name);
    const url = `${API_URL}?$limit=${API_LIMIT}&$where=name like %27%25${name}%25%27`;
    this.getData(url, 'meteorite');
  }

Form.js

const Form = props => (
    <form onSubmit={props.onChangeSearch}>
        <input type="text" name="name" placeholder="Name..." />
        <button>Search</button>
    </form>
);

Я бы сам запросил установку независимо от того, вводит ли пользователь 'ABEE', 'abee' или 'aBee'.

Ответы [ 2 ]

1 голос
/ 29 мая 2019

Сначала сделайте запрос в верхнем регистре

const nameUpper = name.toUpperCase();

Затем используйте upper() в параметре name, чтобы поиск выполнялся по свойствам имени, когда они в верхнем регистре.

    const name = e.target.elements.name.value.toUpperCase();

    const url = `${API_URL}?$limit=${API_LIMIT}&$where=upper(name) like%27%25${name}%25%27`;
0 голосов
/ 23 мая 2019

Я думаю, что нашел решение:

https://data.nasa.gov/resource/gh4g-9sfh.json?$limit=100&$where=upper(name)=%27ABEE%27

В документацию включен пример, который не был ясен:

upper (...)

You can also use it within the $where parameter to do case-insensitive matches

...