Я запускаю команду sql, которая возвращает ограничения ключа по умолчанию из таблицы Sql. Затем я добавляю их в список, который будет использоваться для проверки записей в таблице, чтобы узнать, используют ли они значения по умолчанию.
Проблема в том, что возвращенные ограничения по умолчанию содержат либо одинарную, либо двойную скобку. . Достаточно легко проверить / удалить эти круглые скобки, когда они находятся в начале и в конце строки. Однако, когда круглые скобки окружают дату вроде этой: (((1)/(1))/(1900))
как я могу проверить эту строку и удалить все скобки?
Код на данный момент
//return default constraints
dr.ExecuteReader("
SELECT
ColumnName = c.name,
TableName = t.name,
df.definition
FROM
sys.default_constraints df
INNER JOIN
sys.tables t ON df.parent_object_id = t.object_id
INNER JOIN
sys.columns c ON c.object_id = df.parent_object_id AND df.parent_column_id = c.column_id
WHERE
t.Name = N'" + table + "'")
While dr.Read
defaultConstraintValue = dr.Item("definition").ToString
//delete "(( ))" Or "( )" from default constraint
If defaultConstraintValue.StartsWith("((") AndAlso defaultConstraintValue.EndsWith("))") Then
defaultConstraintValue = defaultConstraintValue.Substring(0, defaultConstraintValue.Length - 2)
defaultConstraintValue = defaultConstraintValue.Substring(2)
ElseIf defaultConstraintValue.StartsWith("(") AndAlso defaultConstraintValue.EndsWith(")") Then
defaultConstraintValue = defaultConstraintValue.Substring(0, defaultConstraintValue.Length - 1)
defaultConstraintValue = defaultConstraintValue.Substring(1)
End If
If defaultConstraintValue.StartsWith("'") AndAlso defaultConstraintValue.EndsWith("'") Then
defaultConstraintValue = defaultConstraintValue.Substring(0, defaultConstraintValue.Length - 1)
defaultConstraintValue = defaultConstraintValue.Substring(1)
If Not IsNumeric(defaultConstraintValue) Then
defaultConstraintValue = "'" + defaultConstraintValue + "'"
End If
End If
columnName = dr.Item("ColumnName").ToString.ToUpper.Trim
constraintKeys.Add(columnName, defaultConstraintValue)
End While
Next