SQL Server Compact查询分析器:如何更改表中字符串值的一部分?

我有一个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 …’开头的字符串.

点赞