我正在尝试将基于MySQL的应用程序迁移到Microsoft SQL Server 2005(不是选择,而是生活).
在原始应用程序中,我们几乎完全使用符合ANSI-SQL的语句,但有一个重要的例外 - 我们group_concat经常使用MySQL的函数.
group_concat顺便说一下,这样做:给出一张表,比如说,员工姓名和项目......
SELECT empName, projID FROM project_members;
Run Code Online (Sandbox Code Playgroud)
收益:
ANDY | A100
ANDY | B391
ANDY | X010
TOM | A100
TOM | A510
Run Code Online (Sandbox Code Playgroud)
...这是你用group_concat得到的:
SELECT
empName, group_concat(projID SEPARATOR ' / ')
FROM
project_members
GROUP BY
empName;
Run Code Online (Sandbox Code Playgroud)
收益:
ANDY | A100 / B391 / X010
TOM | A100 / A510
Run Code Online (Sandbox Code Playgroud)
所以我想知道的是:是否有可能在SQL Server中编写用户定义的函数来模拟其功能group_concat?
我几乎没有使用UDF,存储过程或类似的东西的经验,只是直接的SQL,所以请错误地说太多的解释:)
为什么有人会WHERE 1=1 AND <conditions>在SQL子句中使用(通过串联字符串获得的SQL,视图定义)
我已经在某处看到这将用于防止SQL注入,但它似乎非常奇怪.
如果有注射WHERE 1 = 1 AND injected OR 1=1会产生相同的结果injected OR 1=1.
稍后编辑:视图定义中的用法如何?
谢谢您的回答.
但是,我不明白为什么有人会使用这种结构来定义视图,或者在存储过程中使用它.
以此为例:
CREATE VIEW vTest AS
SELECT FROM Table WHERE 1=1 AND table.Field=Value
Run Code Online (Sandbox Code Playgroud) 我看到有些人使用语句来查询MySQL数据库中的表,如下所示:
select * from car_table where 1=1 and value="TOYOTA"
Run Code Online (Sandbox Code Playgroud)
但1=1这里的意思是什么?
我想知道是否有办法根据列名验证特定表的SQL Server数据库中是否存在索引:
假设我运行以下脚本:
CREATE NONCLUSTERED INDEX [MyIndexName]
ON [dbo].[MyTable] ([CustomerId])
INCLUDE ([Id],[ModificationDate],[ProductId])
GO
Run Code Online (Sandbox Code Playgroud)
现在我想根据表名和列(以及include子句中的列)检查索引是否存在,而不是实际的索引名.
(SQL Server 2008 R2)
谢谢
我需要修改列定义,但我想检查列是否首先启用了全文.有没有办法在TSQL脚本中进行这样的检查?
我正在使用SQL Server 2005.
我想监视sql数据库的索引使用情况,以便找到未使用的索引,然后删除它们.如何最有效地监控索引使用情况?哪些脚本可能有用?
(我知道有关识别未使用对象的问题,但这仅适用于sql server的当前运行.我想监视一段时间内的索引使用情况......)
有没有人有一个脚本列出SQL Server数据库中所有现有索引的CREATE INDEX语句?
此线程SQL Server DB中所有索引和索引列的列表提供了有关如何查找它们的重要提示.但是生成CREATE INDEX语句的脚本会很棒.有时我们遇到没有足够数据的情况,或者在没有文档的情况下以特别方式添加索引,因此缺少create语句.就像我现在发现自己的情况一样.
谢谢.
此查询来自此处的答案.where子句中有(1 = 1),但执行计划是相同的(SQL Express 2008R2).
我猜它是过去的神器?
SELECT
ind.name
,ind.index_id
,ic.index_column_id
,col.name
,ind.*
,ic.*
,col.*
FROM sys.indexes ind
INNER JOIN sys.index_columns ic
ON ind.object_id = ic.object_id and ind.index_id = ic.index_id
INNER JOIN sys.columns col
ON ic.object_id = col.object_id and ic.column_id = col.column_id
INNER JOIN sys.tables t
ON ind.object_id = t.object_id
WHERE (1=1)
AND ind.is_primary_key = 0
AND ind.is_unique = 0
AND ind.is_unique_constraint = 0
AND t.is_ms_shipped = 0
ORDER BY
t.name, ind.name, ind.index_id, ic.index_column_id
Run Code Online (Sandbox Code Playgroud) sql ×5
sql-server ×5
indexing ×3
database ×1
dynamic-sql ×1
maintenance ×1
mysql ×1
t-sql ×1
where-clause ×1