我有一个SQL Server Compact Edition 4.0数据库文件,其扩展名为.sdf.数据库由图书编目应用程序创建.该数据库有许多表,其中有一个名为Book的表,其中包含数据库中每本书的一行.该表中有许多列,其中一列名为FrontCover,其中包含一个字符串值,该字符串值包含两部分:图书封面的图像文件的路径部分和文件名部分,例如:
Documents and Settings\Boson\My Documents\Books\Covers\0596003978.jpg
在此示例中,路径部分是:
'Documents and Settings\Boson\My Documents\Books\Covers'
而文件部分是:
'0596003978.jpg'
有些书籍不包含FrontCover列的任何值,因为前封面不可用.对于此类书籍,FrontCover列为空.但是,如果书籍具有封面图像文件,则字符串值具有相同的路径部分但具有不同的文件部分.例如,对于另一个图书专栏,FrontCover具有以下值:
'Documents and Settings\Boson\My Documents\Books\Covers\1590596633.jpg'
我们可以看到路径部分与第一个例子中的相同,即:
'Documents and Settings\Boson\My Documents\Books\Covers'
但文件部分不同:
'1590596633.jpg'
问题:
我想更改整个表Book,以便为表中的每本书修改FrontCover列的字符串值,使文件部分保持不变,但路径部分更改为:
'Documents and Settings\Boson\My Documents\Books\Covers'
至
'Books\AEM database\Covers'
因此,第一个示例中书籍的FrontCover列的字符串值将从以下更改:
'Documents and Settings\Boson\My Documents\Books\Covers\0596003978.jpg'
至
'Books\AEM database\Covers\0596003978.jpg'
文件部分相同但路径部分已更改.我想更改整个Book表,以便列FrontCover的字符串值的文件部分保持不变,但路径部分按上面指定的方式更改.
拥有.sdf数据库文件的图书编目应用程序是愚蠢的,无法完成工作.因此,我安装了一个名为SQL Compact Query Analyzer(http://sqlcequery.codeplex.com/)的简单开源SQL查看/编辑应用程序. SQL Compact Query Analyzer可以打开.sdf数据库文件并接受SQL命令以修改.sdf数据库文件.
能否帮助我完成可以完成工作的SQL命令?
非常感谢您的帮助.
最好的祝福
最佳答案
UPDATE Book SET FrontCover = REPLACE(
CAST(FrontCover AS NVARCHAR(300)),
'Documents and Settings\Boson\My Documents\Books\Covers',
'Books\AEM database\Covers')
WHERE FrontCover like
'Documents and Settings%'
注意:where子句可能没有必要,但它确保您只替换以’Documents and Settings …’开头的字符串.