这是我想要做的总结:
$array[0] = 1;
$array[1] = 2;
$sql = "SELECT * FROM table WHERE some_id = $array"
显然有一些语法问题,但这就是我想要做的,而且我还没有发现任何显示如何做的事情。
目前,我的计划是沿着这些方向做点什么:
foreach($idList as $is)
$where .= 'some_id=' . $id . ' OR';
endforeach
$sql = "SELECT * FROM table WHERE " . $where;
在PostgreSQL中是否支持使用数组进行搜索,或者我必须做一些与我的解决方案类似的事情?
答案 0 :(得分:89)
SELECT *
FROM table
WHERE some_id = ANY(ARRAY[1, 2])
或ANSI
- 兼容:
SELECT *
FROM table
WHERE some_id IN (1, 2)
首选ANY
语法,因为整个数组可以在绑定变量中传递:
SELECT *
FROM table
WHERE some_id = ANY(?::INT[])
您需要传递数组的字符串表示形式:{1,2}
答案 1 :(得分:2)
$array[0] = 1;
$array[2] = 2;
$arrayTxt = implode( ',', $array);
$sql = "SELECT * FROM table WHERE some_id in ($arrayTxt)"
答案 2 :(得分:1)
对于动态SQL使用:
routes.MapRoute(
name: "Search",
url: "ProductStateLookup/{search}",
defaults: new { controller = "ProductStateLookup", action = "Index", id = UrlParameter.Optional }
);
.../ProductStateLookup/1234
结果:
'IN(' ||array_to_string(some_array, ',')||')'
答案 3 :(得分:1)
就我而言,我需要处理包含数据的列,因此使用IN()无效。 感谢@Quassnoi的示例。 这是我的解决方案:
func main() {
m := matrix.Matrix{Element: [][]float64{{1, 2}, {3, 4}}}
fmt.Println(m) // i want this to just return [[1 2] [3 4]] (as Element field)
// and explicitly refer to a matrix.Matrix.Element field, without other fields involved
}
在迷迷糊糊之前,我花了将近6个小时。