Skip to content

Commit 40921d5

Browse files
committed
DuckDB IndexOfStart added
1 parent a12dd39 commit 40921d5

1 file changed

Lines changed: 4 additions & 4 deletions

File tree

src/SQLProvider.Runtime/Providers.DuckDb.fs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -710,10 +710,10 @@ type internal DuckDbProvider(resolutionPath, contextSchemaPath, owner:string, re
710710
| Length -> sprintf "LENGTH(%s)" column
711711
| IndexOf(SqlConstant search) -> sprintf "POSITION(%s IN %s)" (fieldParam search) column
712712
| IndexOf(SqlCol(al2, col2)) -> sprintf "POSITION(%s IN %s)" (fieldNotation al2 col2) column
713-
//| IndexOfStart(SqlConstant search,(SqlConstant startPos)) -> sprintf "LOCATE(%s,%s,%s)" (fieldParam search) column (fieldParam startPos)
714-
//| IndexOfStart(SqlConstant search,SqlCol(al2, col2)) -> sprintf "LOCATE(%s,%s,%s)" (fieldParam search) column (fieldNotation al2 col2)
715-
//| IndexOfStart(SqlCol(al2, col2),(SqlConstant startPos)) -> sprintf "LOCATE(%s,%s,%s)" (fieldNotation al2 col2) column (fieldParam startPos)
716-
//| IndexOfStart(SqlCol(al2, col2),SqlCol(al3, col3)) -> sprintf "LOCATE(%s,%s,%s)" (fieldNotation al2 col2) column (fieldNotation al3 col3)
713+
| IndexOfStart(SqlConstant search,(SqlConstant startPos)) -> sprintf "CASE WHEN POSITION(%s IN SUBSTRING(%s, %s)) > 0 THEN POSITION(%s IN SUBSTRING(%s, %s)) + %s - 1 ELSE 0 END" (fieldParam search) column (fieldParam startPos) (fieldParam search) column (fieldParam startPos) (fieldParam startPos)
714+
| IndexOfStart(SqlConstant search,SqlCol(al2, col2)) -> sprintf "CASE WHEN POSITION(%s IN SUBSTRING(%s, %s)) > 0 THEN POSITION(%s IN SUBSTRING(%s, %s)) + %s - 1 ELSE 0 END" (fieldParam search) column (fieldNotation al2 col2) (fieldParam search) column (fieldNotation al2 col2) (fieldNotation al2 col2)
715+
| IndexOfStart(SqlCol(al2, col2),(SqlConstant startPos)) -> sprintf "CASE WHEN POSITION(%s IN SUBSTRING(%s, %s)) > 0 THEN POSITION(%s IN SUBSTRING(%s, %s)) + %s - 1 ELSE 0 END" (fieldNotation al2 col2) column (fieldParam startPos) (fieldNotation al2 col2) column (fieldParam startPos) (fieldParam startPos)
716+
| IndexOfStart(SqlCol(al2, col2),SqlCol(al3, col3)) -> sprintf "CASE WHEN POSITION(%s IN SUBSTRING(%s, %s)) > 0 THEN POSITION(%s IN SUBSTRING(%s, %s)) + %s - 1 ELSE 0 END" (fieldNotation al2 col2) column (fieldNotation al3 col3) (fieldNotation al2 col2) column (fieldNotation al3 col3) (fieldNotation al3 col3)
717717
| CastVarchar -> sprintf "CAST(%s AS CHAR)" column
718718
| CastInt -> sprintf "CAST(%s AS INT)" column
719719
// Date functions

0 commit comments

Comments
 (0)