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`;
我正在尝试查找所有大小写混合的结果。
例如 '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`;