---
title: "Ersätta n antal ? i en sträng från en array."
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/165122-ersätta-n-antal-i-en-sträng-från-en-array"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Fredde Mannen"
published: "2007-10-03T11:14:06.000Z"
updated: "2007-10-03T13:51:20.000Z"
replies: 2
views: 297
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/165122-ersätta-n-antal-i-en-sträng-från-en-array"
---

# Ersätta n antal ? i en sträng från en array.

## #1 — Fredde Mannen, 2007-10-03T11:14Z

Satt och funderade en del här i dag på hur jag enklast skall lösa detta på. 

Kom aldrig fram till något vettigt.. (läs fungerande)

En array 

```
Dim arr(3)
arr(0) = "Fredrik"
arr(1) = "Testar"
arr(3) = "En enklare lösning"
```

Denna arrays värden skall i den ordningen de ligger i arrayn ersätta följande frågetecken i en sträng, där index på ? är okänd.
Ex.

```
 SQL = "INSERT INTO Tabell(col1, col2, col3) VALUES(?,?,?)"
```

Ge mig lite idéer och så :)

Permalänk: https://www.webforum.nu/p/165122

## #2 — voigtann1, 2007-10-03T11:17Z

inte den bästa lösningen men "splitar" strängen vid ? och loopar igenom den och lägg samma värde som din "sql-array" är... problemet är .. eller "problem" behöver det inte vara.. men vad händer om din SQL måste ha en sträng och ett Interger... (visst detta går också att lösa med TypeName kanske. Om du inte vill splitar gör en split med hjälp av regExp och kör det på det sättet.

Permalänk: https://www.webforum.nu/p/2036291

## #3 — Fredde Mannen, 2007-10-03T13:51Z

> **voigtann1 skrev:**
>
> inte den bästa lösningen men "splitar" strängen vid ? och loopar igenom den och lägg samma värde som din "sql-array" är... problemet är .. eller "problem" behöver det inte vara.. men vad händer om din SQL måste ha en sträng och ett Interger... (visst detta går också att lösa med TypeName kanske. Om du inte vill splitar gör en split med hjälp av regExp och kör det på det sättet.

 Körde på den första varianten.. 

Resultat

```
Function BuildSql(stringSQL,Params)
	Dim pos
	pos = split(trim(stringSQL),"?")

	if IsArray(Params) Then
		For i = 0 To Ubound(pos)
			Select Case(TypeName(Params(i)))
				Case "String"
					pos(i) = pos(i) & "'" & Params(i) & "'"
				Case "Integer"
					pos(i) = pos(i) & Params(i)
				Case "Double"
					pos(i) = pos(i) & "'" & Params(i) & "'"
				Case "Date"
					pos(i) = pos(i) & "'" & Params(i) & "'"
			End Select

			BuildSql = BuildSql & pos(i) 
		Next

	Else
		For i = 0 To Ubound(pos) - 1
			Select Case(TypeName(Params))
				Case "String"
					pos(i) = pos(i) & "'" & Params & "'"
				Case "Integer"
					pos(i) = pos(i) & Params
				Case "Double"
					pos(i) = pos(i) & "'" & Params & "'"
				Case "Date"
					pos(i) = pos(i) & "'" & Params & "'"
			End Select
			BuildSql = BuildSql & pos(i) 

		Next
		
	End if
End Function
```

Anropar: 

```
strSQL1 = "INSERT INTO tabell(s,s,s,s) values(?,?,?)"
strSQL2 = "Select * from tabell where id=?"
strSQL3 = "Select * from tabell inner join tabell2 on tabell.uid=tabell2.uid where id=? and email=?"

' Flera parameterar.
Dim parameters(3)
parameters(0) = 100
parameters(1) = "Förnamn"
parameters(2) = "Efternamn"

Response.Write BuildSql(strSQL1, parameters) & "<br />"

' Enstaka parameter
Response.Write BuildSql(strSQL2, 10000) & "<br />"

' Flera parameterar
Dim parameters1(2)
parameters1(0) = 1000
parameters1(1) = "email@email.com"
Response.Write BuildSql(strSQL3, parameters1)
```

Funkade som tänkt :)

Men optimal.. mja..

Permalänk: https://www.webforum.nu/p/2036320

---

Tråden på webben: https://www.webforum.nu/amne/asp/165122-ersätta-n-antal-i-en-sträng-från-en-array
