相关疑难解决方法(0)

SQL Server DB中所有索引和索引列的列表

如何获取SQL Server 2005+中所有索引和索引列的列表?我能得到的最接近的是:

select s.name, t.name, i.name, c.name from sys.tables t
inner join sys.schemas s on t.schema_id = s.schema_id
inner join sys.indexes i on i.object_id = t.object_id
inner join sys.index_columns ic on ic.object_id = t.object_id
inner join sys.columns c on c.object_id = t.object_id and
        ic.column_id = c.column_id

where i.index_id > 0    
 and i.type in (1, 2) -- clustered & nonclustered only
 and i.is_primary_key = 0 -- do not include PK indexes
 and i.is_unique_constraint = 0 -- do not include UQ …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server indexing reverse-engineering

331
推荐指数
13
解决办法
62万
查看次数

为什么有人在SQL子句中使用WHERE 1 = 1 AND <conditions>?

为什么有人会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)

sql dynamic-sql

246
推荐指数
13
解决办法
19万
查看次数

动态MySQL存储过程中的子句

我有一个问题,也许它很简单(对你来说是大师).

我将我的SQL Paging类从C#转换为MySQL存储过程.在我的C#自制对象中,查询是根据条件动态构建的.例:

if(keywords is not null)
{ 
  whereClause += "WHERE description LIKE '%keywords%'"
}
if(price is not null)
{
  whereClause += "AND price = '%price%'"
}
Run Code Online (Sandbox Code Playgroud)

....

string query = "SELECT col1, col2 FROM tblThreads " + whereClause
Run Code Online (Sandbox Code Playgroud)

现在,我的问题是:如何在MySQL中执行类似于此的动态where子句?或者更确切地说,如果他们没有为这些参数输入任何内容,我将如何告诉存储过程中的MySQL跳过这些参数?IE:

SELECT col1, col2 FROM tblThreads
Run Code Online (Sandbox Code Playgroud)

如果这些参数为空,那会是这样的吗?

SELECT col1, col2 FROM tblThreads WHERE (IS NULL @keywords OR description like '%@keywords%'
Run Code Online (Sandbox Code Playgroud)

??

多谢你们.

mysql sql procedure

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

WHERE子句,始终选择表中的所有记录

我正在寻找创建一个生成SQL查询的函数,通过作为参数给出的表达式过滤结果(它将作为'WHERE'子句传递).如果省略该参数,则返回所有结果.

为了做到这一点,我可以测试一个null参数,只有在给定参数(where = (parameter != null) ? "" : "WHERE " + parameter)时才构建where子句.但是,我在想是否有一个我可以默认的表达式,它将始终返回所有结果.这样我就不需要测试是否包含WHERE关键字(where = "WHERE " + parameter).

我故意没有提到逃避参数以避免注入.在我的解决方案中,我不会忘记这一点,我保证!:)

sql resultset where-clause

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

在条件语句中插入"1 == 1"(1等于1)的实际用途是什么?

有时在JavaScript或C#代码中,我会看到"1 == 1"条件语句.

C#示例:

if (!IsPostBack || 1==1)
Run Code Online (Sandbox Code Playgroud)

我知道在Sql语句中,在动态构建查询或创建sql注入攻击时可以使用1 = 1 ,但我不理解在C#或JavaScript中总是求值为true的测试的实际用法.

javascript c# conditional-operator

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