将字符串截断为VBS中的第一个通配符

时间:2015-03-27 19:44:39

标签: string powershell vbscript sql-server-2008-r2

我有以下表达式,它转到SQL表(SQL Server 2008 R2)并抓取要打开的文件路径(通常是PDF或照片),格式化为在Access前端中作为超链接。

这是我在VBS文件中所做的事情......

Dim Input
Input = InputBox("Enter your WO#", "PDF Search", "ie. 40900500")

set conn2 = createobject("ADODB.Connection")
conn2.open "Driver={SQL Server}; Server=server; UID=user; PWD=password; Database=db;"    

dim sql2

msgbox("Testing fixture connection...")

dim rs2
set rs2 = createobject("ADODB.Recordset")

sql2 = "select Photo from Fixtures where Application = '" & input & "'"

rs2.open sql2, conn2

msgbox("It worked! Your photo is here: " & rs2.fields(0).value)

......最终会回复......

enter image description here

...我需要的只是第一个数字符号之前的文件路径(此消息框只是为了测试连接并显示我正在使用的数据)。

如何从字段值中截断字段值我从SQL返回到第一个数字符号,以便通过在.vbs文件中运行powershell对象来打开文件?

随时欢迎任何帮助! :)

1 个答案:

答案 0 :(得分:1)

1)您可以使用以下表达式在第一个#之前提取文件路径:

sql2 = "select LEFT(Photo, NULLIF(CHARINDEX('#', Photo), 0) - 1) from Fixtures where  ..."

如果某些行不包含#,那么您可以使用:

sql2 = "select LEFT(Photo, ISNULL(NULLIF(CHARINDEX('#', Photo), 0) - 1, 260)) from Fixtures where  ..."

测试:

DECLARE @Photo VARCHAR(260) 
SET @Photo = 'J:\DRAWINGS\Folder1\File1.jpg#aaa#'

SELECT LEFT(@Photo, NULLIF(CHARINDEX('#', @Photo), 0) - 1) AS T1
-- J:\DRAWINGS\Folder1\File1.jpg

SET @Photo = 'J:\DRAWINGS\Folder1\File1.jpg'
SELECT LEFT(@Photo, ISNULL(NULLIF(CHARINDEX('#', @Photo), 0) - 1, 260)) AS T2
-- J:\DRAWINGS\Folder1\File1.jpg

2)你应该在上面的行

中避免字符串连接
sql2 = "select Photo from Fixtures where Application = '" & input & "'"

你应该使用参数化查询=>见SQL Injections