CAT 工具/DéjàVu X/SQL
DVX 中的 SQL
DVX 基于 Transact-SQL,这是微软和 Sybase 对用于查询数据库的结构化语言的解释。通过使用 SQL,您可以选择(查看或导出)或处理(更新或删除)满足特定条件的数据库段。前者称为 SQL Select;后者称为 SQL Execute。DVX 的不同版本对 SQL 提供以下支持
DVX 编辑器 - 无。
DVX Standard - SQL Select(参见 DVX Standard 手册)。
DVX Professional - SQL Select 和 SQL Execute(参见 DVX Professional 手册)。
DVX Workgroup - SQL Select 和 SQL Execute(参见 DVX Workgroup 手册)。
例如,您可以使用 SQL 删除 2004 年 1 月 2 日至 2004 年 1 月 10 日 13:07 之间由用户 John 创建的所有数据库段,前提是这些字符串不包含“dog”一词。或者,如果某些数据库段已链接到特定客户 A,则在客户 B 决定接管客户 A 后,您可以将客户 A 的名称更改为客户 B。示例可以根据您的需要变得复杂。
在 DVX 中使用 SQL 是一个非常高级的主题,关于它已经写了很多东西。上述手册是关于在 DVX 中使用 SQL 的非常好的资源。另一个非常好的资源是 A Tinkerer's Guide to SQL in DVX,作者是 Michael Farrell。
DVX 内存数据库中 SQL 用法的示例
请注意,SQL Select 语句是通过屏幕中间左侧的 SQL Select 输入的,而 SQL Execute 语句是通过 Database > Execute SQL 输入的。下划线部分需要您自行填写。
将用户昵称 A 更改为用户昵称 B
UPDATE Sentences SET UserNick = 'newnick' WHERE UserNick = 'oldnick'
将客户 A 更改为客户 B
UPDATE Translations SET Client = 'newclient' WHERE Client LIKE '*partofoldclientsname*'
根据实际项目名称或其一部分(而不是 PrjID)更新客户名称
UPDATE Translations SET Client='newclient' WHERE ID IN (SELECT ID FROM Translations WHERE PrjID in (SELECT Projects.Prjid FROM Projects WHERE ((Projects.PrjTitle) LIKE "*partOfProjectName*")))
根据日期戳更新客户名称
UPDATE Translations SET Client='newclient' WHERE ID IN (SELECT ID FROM Sentences WHERE DateStamp >= #mm/dd/yyyy hh:mm# AND DateStamp < #mm/dd/yyyy hh:mm#)
您必须指定日期范围,因为日期戳还包含有关时间的信息。如果需要,您可以省略时间部分 (hh:mm)。
删除句子开头处的数字和后面的制表符
此外,还可以将函数包含在 SQL 语句中,以增加更多灵活性。下面的语句可能对已添加到数据库的带对齐的记录很有用,在这种情况下,可能会出现一些奇怪的模式。例如,某些记录可能以数字开头,后面跟着一个制表符(在数据库中显示为一个长空格)。
UPDATE Sentences SET Sentence=RIGHT(Sentence,LEN(Sentence)-instr(Sentence,chr(9))) WHERE ID IN (SELECT ID from Sentences WHERE Sentence LIKE '[0-9]*'+chr(9)+'*')
上面的说明可以转换为 SQL Select 语句(仅供查看或导出),方法是省略到第一个WHERE实例(包括该实例)之前的所有内容。强烈建议在实际执行这些语句之前,先通过进行选择来测试 SQL。
DVX 项目中 SQL 用法的示例
以下 SQL 查询用于检查一个项目的目标段,其中英语是源语言,荷兰语是目标语言。对于其他语言代码,请查看 DVX 手册或在线帮助。
检查标点符号
打开行选择器,选择 SQL 语句,粘贴下面列出的查询,然后选择应用。
target_1043 like '* .*' OR
target_1043 like '* ,*' OR
target_1043 like '* ;*' OR
target_1043 like '* :*' OR
target_1043 like '* [?]*' OR
target_1043 like '* [!]*'
这将选择所有在前面有空格的“.”、“,”、“;”、“:”、“?”、“!”的段。
检查右括号前面的空格和左括号后面的空格
打开行选择器,选择 SQL 语句,粘贴下面列出的查询,然后选择应用。
target_1043 like '* )*' OR
target_1043 like '* *' OR
target_1043 like '* >*' OR
target_1043 like '*( *' OR
target_1043 like '* *' OR
target_1043 like '*< *'
这将选择所有在前面有空格的“)”、“]”、“>”或后面有空格的“(”、“[”、“<”的段。
源包含句号,而目标不包含
source like "*.*" and target_1043 not like "*.*"
目标包含左括号,但不包含右括号
target_1043 like "*(*" and target_1043 not like "*)*"
源包含左括号,而目标不包含
source like "*(*" and target_1043 not like "*(*"
源包含右括号,而目标不包含
source like "*)*" and target_1043 not like "*)*"
目标段比源段长
LEN(target_1043) > len(source)
目标段比特定值长(对字幕或软件字符串有用)
LEN(target_1043) > 38
目标的第 4 个位置是空格
InStr(1,target_1043," ",1)=4
源以大写字母开头,而目标以小写字母开头
(asc(left(source,1)) between 96 and 122) AND (asc(left(Target_1043,1)) between 65 and 90)
(一个语句!)