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

时间:2019-05-23 20:21:54

标签: reactjs api socrata

我试图找到所有混合情况的结果。

例如,“ Abee”只会在搜索确切的案例时返回。

我已经在like '...'选项中进行了尝试,但尝试使用上层(但它似乎是为返回而不是查询)。

这是我正在传递的查询。

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 个答案:

答案 0 :(得分:1)

首先使查询大写

const nameUpper = name.toUpperCase();

然后在名称参数上使用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`;

答案 1 :(得分:0)

我想我找到了解决方法:

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