Socrata SoQL 的不区分大小写的查询

case-insensitive queries for a Socrata SoQL

我正在尝试查找所有大小写混合的结果。

例如 'Abee' 只会 return 搜索那个确切的案例。

我查看了 like '...' 选项并尝试了上层(但它似乎是针对 return 而不是查询)。

这是我正在传递的有效查询。

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'.

,我都会自行设置查询

我想我找到了解决方案:

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

文档中包含一个不太清楚的示例:

上(...)

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

首先将查询设为大写

const nameUpper = name.toUpperCase();

然后在 name 参数上使用 upper(),因此在名称属性为大写时执行搜索。

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

    const url = `${API_URL}?$limit=${API_LIMIT}&$where=upper(name) like%27%25${name}%25%27`;