Как удалить скобки из ограничений по умолчанию, возвращаемых из таблицы SQL? - PullRequest
0 голосов
/ 05 мая 2020

Я запускаю команду 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...