【发布时间】:2013-05-20 00:22:48
【问题描述】:
我正在尝试创建一个从字段中选择记录片段的 SQL 查询。以下是一个未编辑字段中内容的简短示例:
<Name>Example1</Name>
<Type>String</Type>
<Nullable>False</Nullable>
<AllowBlank>False</AllowBlank>
<Prompt>Start Date (DD-MMM-YYYY)</Prompt>
<PromptUser>True</PromptUser> </Parameter>
<Parameter>
<Name>Example2</Name>
<Type>String</Type>
<Nullable>False</Nullable>
<AllowBlank>False</AllowBlank>
<Prompt>Case (Enter Case Number, % for all, OR %AL% for Alberta)</Prompt>
<PromptUser>True</PromptUser>
<DefaultValues>
<Value>%al%</Value>
</DefaultValues>
<Values>
<Value>%al%</Value>
</Values> </Parameter>
<Parameter>
完全一团糟,好吧,我正在尝试提取所有名称、提示,如果它有一个值,那么它的值并将所有这些放入一个格式化的字段中。例如上面的字段应该是这样的
Name: Example1
Prompt: Start Date (DD-MMM-YYYY)
Name: Example2
Prompt: Case (Enter Case Number, % for all, OR %AL% for Alberta)
Value: %al%
我尝试过使用 STUFF,但在单个字段中可以有任意数量的带有提示和值的名称。我的下一个想法是使用替换来替换所有 但这会让我留下像这样的东西
Name: Example1
String
False
False
Prompt: Start Date (DD-MMM-YYYY)
Name: Example2
String
False
False
Prompt: Case (Enter Case Number, % for all, OR %AL% for Alberta)
True
Value: %al%
%al%
编辑:另一个可能解决问题的想法是,如果我可以使用 REPLACE 替换两个已知字符/字符串之间或连同两个已知字符/字符串一起替换的未知长度字符串,例如替换 <Type>###</Type> 其中 ### 表示中间的任意数量的字符两个已知字符串 和 。问题是我不知道这是否可能,或者如果可能的话,该怎么做。
欢迎提出任何建议。
【问题讨论】:
-
您使用的是哪个 RDBMS?
-
我正在使用 Microsoft SQL Server Management Studio,SQL server 2008 r2
-
显示您尝试过的代码。
-
我正在尝试上传一些代码,但它不允许我,而是在我尝试保存编辑时出错
-
我现在尝试的代码是一个巨大的嵌套 REPLACE 语句,与此类似,只是有更多替换“REPLACE(REPLACE(CONVERT(varchar(8000), cc.[Parameter]), '
', 'Parameter: '),' ', 'Prompt: ')" 它给出的输出类似于上面最后一个示例输出中的输出。我仍然无法保存我的问题的代码。
标签: sql replace sql-server-2008-r2 substring case