这些是名为st:
的表中的列名st4stat
st8stat
st1stat
st11stat
st6stat
st10stat
st2stat
st7stat
st12stat
只有当这些列中的多个列不为空时,我才需要选择(选择它们的值)。 我不能说任何可能的组合。这有什么快捷的方法吗?
答案 0 :(得分:1)
将每个测试转换为整数:
export function getIdByName(name) {
console.log('getIdByName Thunk Action')
return dispatch => {
const FIELD = '/characters'
let encodedName = encodeURIComponent(name.trim());
let searchUrl = ROOT_URL + FIELD + '?ts=' + TS + '&apikey=' + PUBLIC_KEY + '&hash=' + HASH + '&name=' + encodedName;
return axios.get(searchUrl)
.then(result => {
console.log('test 151', result)
dispatch({
type: GET_ID_BY_NAME_SUCCESS,
payload: result
})
return result.data ; // add this <=============
})
}
}
答案 1 :(得分:0)
在没有创建功能(或几个)的情况下,我不知道任何好的方法,但有一些不那么漂亮的方法。
你可以用丑陋的
来做SELECT * from ROW
WHERE (CASE WHEN col2 is null THEN 0 ELSE 1 END +
CASE WHEN col2 is null THEN 0 ELSE 1 END +
CASE WHEN col3 is null THEN 0 ELSE 1 END +
...) > 1;
如果列具有相同的数据类型,我们也可以更好地使用数组:
SELECT * from ROW
WHERE array_length(array_remove(ARRAY[col1, col2, col3, col4, ...], NULL), 1) > 1;
这会生成一个列值数组,然后删除所有NULL,如果数组中还有多个值,则打印该行。
如果列有不同的类型,那么我们可以使用IS NULL
来获取布尔值并执行相同的操作:
SELECT * from ROW
WHERE array_length(array_remove(ARRAY[col1 IS NULL, col2 IS NULL, col3 IS NULL, col4 IS NULL, ...], true), 1) > 1;