diff --git a/hibernate-core/src/main/java/org/hibernate/dialect/pagination/SQLServer2005LimitHandler.java b/hibernate-core/src/main/java/org/hibernate/dialect/pagination/SQLServer2005LimitHandler.java index ac6a83c086..997436a60f 100644 --- a/hibernate-core/src/main/java/org/hibernate/dialect/pagination/SQLServer2005LimitHandler.java +++ b/hibernate-core/src/main/java/org/hibernate/dialect/pagination/SQLServer2005LimitHandler.java @@ -387,15 +387,19 @@ private static List generateIgnoreRanges(String sql) { int depth = 0; int start = -1; + boolean insideAStringValue = false; for ( int i = 0; i < sql.length(); ++i ) { final char ch = sql.charAt( i ); - if ( ch == '(' ) { + if ( ch == '\'' ) { + insideAStringValue = !insideAStringValue; + } + else if ( ch == '(' && !insideAStringValue ) { depth++; if ( depth == 1 ) { start = i; } } - else if ( ch == ')' ) { + else if ( ch == ')' && !insideAStringValue ) { if ( depth > 0 ) { if ( depth == 1 ) { ignoreRangeList.add( new IgnoreRange( start, i ) );