小编IT *_*her的帖子

使用 like over charindex 来搜索模式

我们在这里使用 charindex 来搜索一个字符串,如下所示

SELECT *
FROM tablename
WHERE ( Charindex('47a%$.abc',CAST(columnname AS VARCHAR(MAX)))>0 )
Run Code Online (Sandbox Code Playgroud)

我打算用 LIKE 替换 charindex,因为我只需要搜索模式是否存在而不是位置。所以我想知道在我的情况下使用 LIKE 而不是 charindex 有什么缺点。我在几种情况下使用 charindex。所以我希望它适用于所有 sql 数据类型,包括特殊字符在内的所有字符(包括 %(就像已经使用了 %pattern%)。所以请告诉我使用 like 超过 charindex 有什么缺点

performance sql-server-2008-r2 pattern-matching

1
推荐指数
1
解决办法
1210
查看次数

字符串末尾的空格

我有一个如下所示的 SQL 代码:

declare @str nvarchar(max),@i int
set @i=0
set @str='abc '
declare @tbl Table(a  nvarchar(max)) 
insert @tbl select @str
while (select a from @tbl)<>''
begin 
    set @i=@i+1
    set @str = substring(@str,2,len(@str))
    update  @tbl set a=@str
select * from @tbl
end
Run Code Online (Sandbox Code Playgroud)

这里@str有值'abc '(末尾有空格)。执行上述查询时,当'a'. 此查询的输出还包括:

bc
c
<here blank>
Run Code Online (Sandbox Code Playgroud)

对于上面的查询,如果我给出输入@str'abcd' 那么输出将是

bcd
cd
d
<here blank>
Run Code Online (Sandbox Code Playgroud)

所以在第一种情况下,@str='abc '我想得到像

bc
c
<here blank>
<here blank>
Run Code Online (Sandbox Code Playgroud)

现在代码正在检查空间,因此我遇到了问题。但我希望它也考虑到最后的空间。

同样是 SQL 中的问题len()。双方 …

sql-server

0
推荐指数
1
解决办法
1万
查看次数

xml 查询存在并包含给出意外结果

我有一个查询,如下所示。

DECLARE @tbl TABLE  
(   
 id INT,    
 col XML        
)   
INSERT INTO @tbl    
VALUES  
(1,'<Root>
  <Row>
    <User>xyz</User>
    <Rowid>1</Rowid>
  </Row>
  <Maxrowid>1</Maxrowid>
</Root>'),
(2,'<Root>
  <Row>
    <User>xyz</User>
    <Rowid>1</Rowid>
  </Row>
  <Row>
    <User>mnj</User>
    <Rowid>2</Rowid>
  </Row>
  <Maxrowid>2</Maxrowid>
</Root>'),(3,'<Root>
  <Row>
    <User>abs</User>
    <Rowid>1</Rowid>
  </Row>
  <Row>
    <User>xra</User>
    <Rowid>2</Rowid>
  </Row>
  <Maxrowid>2</Maxrowid>
</Root>
')  

--table before---
SELECT  *
FROM    @tbl t1
------------------

DECLARE @id varchar 
SELECT @id = 'xyz'  
SELECT  *   
FROM    @tbl t1 
WHERE col.exist('//*/text()[contains(.,sql:variable("@id"))]') = 1  
Run Code Online (Sandbox Code Playgroud)

我期待这个查询输出在 xml 列 'col' 中任何地方都有 'xyz' 的行。但它返回所有行。(当我检查它返回所有在 xml 列中包含“x”的行。所以请告诉我为什么会发生?我哪里出错了?还请纠正它。

此外,我还有另一个问题,即对上面相同的 xml 的以下查询不返回任何输出。我希望它返回 xml …

xml sql-server sql-server-2008-r2 xquery

0
推荐指数
1
解决办法
1138
查看次数

SQL Server 中的查询性能

比较查询性能时应该检查哪些因素?

我看到很多关于 IO 成本、子树成本(通过使用执行计划)、CPU 时间、运行时间(通过使用 set statistics time on)、运行查询所需的时间等统计信息的文章。

我见过一些具有高子树成本但执行速度快的查询。所以我想知道在检查查询性能时我必须考虑哪些因素。

performance sql-server sql-server-2008-r2 query-performance

-1
推荐指数
1
解决办法
163
查看次数