Вот моя функция для получения совпадений:
function getAllMatches(regex, text) {
if (regex.constructor !== RegExp) {
throw new Error('not RegExp');
}
var res = [];
var match = null;
if (regex.global) {
while (match = regex.exec(text)) {
res.push(match);
}
}
else {
if (match = regex.exec(text)) {
res.push(match);
}
}
return res;
}
var regex = /abc|def|ghi/g;
var res = getAllMatches(regex, 'abcdefghi');
res.forEach(function (item) {
console.log(item[0]);
});
Я думаю, что ответом на ваш вопрос является использование «DBNull.Value», как указано выше, что-то вроде этого;
string cm = "SELECT column1, column2, column3 FROM mytablename WHERE column1='"
+ DBNull.Value + "' AND column2='" + DBNull.Value + "' OR column1='" + sR[mSSI]
+ "' AND column2='" + DBNull.Value + "'";
Вы должны использовать параметры для передачи значений в оператор SQL, иначе вы будете уязвимы для атак внедрения SQL. Вы можете создать объект SqlCommand
, создать SqlParameter
объекты, а затем установить для них значения. Если какое-либо из ваших значений равно нулю, вы можете передать DBNull.Value
в качестве значения параметра.
SqlCommand cmd = con.CreateCommand();
string cm = "SELECT column1, column2, column3 "
cm += "FROM mytablename "
cm += "WHERE column1=@mSI "
cm += "AND column2=@mSSI OR column1=@mYSI AND column2=@mSI";
cmd.CommandText = cm;
for(int mSSI=0; mSSI<sR.Count(); mSSI++)
{
cmd.Parameters.AddWithValue("@mSI ", sR[mSI]);
// check for a null value
if (sr[mSSI] == null)
{
cmd.Parameters.AddWithValue("@mSSI", DBNull.Value);
}
else
{
cmd.Parameters.AddWithValue("@mSSI", sR[mSSI]);
}
cmd.Parameters.AddWithValue("@mYSI", sR[mYSI]);
SqlDataAdapter sd = new SqlDataAdapter(cmd);
DataTable dat = new DataTable();
sd.Fill(dat);
// clear parameters after each iteration
cmd.Parameters.Clear()
}