标签: sql-like

返回部分匹配值的记录

我正在尝试获取一个查询工作,它从表单控件获取值(有时只是字符串的第一部分).我遇到的问题是它只在输入完整字符串时返回记录.

即在姓氏框中,我应该能够输入gr,然后它会显示出来

绿灰格雷厄姆

但是目前它并没有提供任何无用的完整搜索字符串.

有问题的表单上有4个搜索控件,只有在填写框时才会在查询中使用它们.

查询是:

SELECT TabCustomers.*,
       TabCustomers.CustomerForname AS NameSearch,
       TabCustomers.CustomerSurname AS SurnameSearch,
       TabCustomers.CustomerDOB AS DOBSearch,
       TabCustomers.CustomerID AS MemberSearch
FROM TabCustomers
WHERE IIf([Forms]![FrmSearchCustomer]![SearchMember] Is Null
          ,True
          ,[Forms]![FrmSearchCustomer]![SearchMember]=[customerid])=True
      AND IIf([Forms]![FrmSearchCustomer].[SearchFore] Is Null
              ,True
              ,[Forms]![FrmSearchCustomer]![SearchFore] Like [customerforname] & "*")=True
      AND IIf([Forms]![FrmSearchCustomer]![SearchLast] Is Null
              ,True
              ,[Forms]![FrmSearchCustomer]![SearchLast] Like [customersurname] & "*")=True
      AND IIf([Forms]![FrmSearchCustomer]![Searchdate] Is Null
              ,True
              ,[Forms]![FrmSearchCustomer]![Searchdate] Like [customerDOB] & "*")=True;
Run Code Online (Sandbox Code Playgroud)

sql ms-access sql-like

4
推荐指数
2
解决办法
812
查看次数

在WHERE子句中使用参数化SQL和LIKE(Pervasive SQL)

我有一个使用C++连接的Pervasive数据库.到目前为止,我所有的查询都是参数化的,即"SELECT USER.NAME FROM USER WHERE USER.ID = ?"工作正常.但是在搜索查询中我在WHERE子句中使用LIKE,然后似乎我不能使用参数和野性字符(%).

我的查询看起来像这样"SELECT * FROM DOG WHERE DOG.NAME LIKE '%?%'",因为参数周围有两个'-mark,这就失败了,它搜索了名字中带有?标记的狗.在SQL Server中,这可能通过连接字符串来解决"SELECT * FROM DOG WHERE DOG.NAME LIKE '%' + ? + '%'",但这在Pervasive中是无效的语法(参见本页底部:http://ww1.pervasive.com/library/docs/psql/950/sqlref/sqlref- 04-55.html).

我也尝试将%-signs添加到参数本身,但这似乎也不起作用.

有谁知道解决这个问题?

EDIT1: 一些C++代码示例:

CString sqlCommand = "SELECT * FROM DOG WHERE DOG.NAME LIKE ?;";
m_pAdoCommand->CommandText = _bstr_t(sqlCommand);
m_pAdoCommand->Parameters->Append( m_pAdoCommand->CreateParameter("p0", adVarChar, adParamInput, 25, _bstr_t("'%bob%'")) );
m_pAdoRecordset = m_pAdoCommand->Execute(NULL,NULL,adCmdText);
Run Code Online (Sandbox Code Playgroud)

(m_pAdoCommand是一个_CommandPtr,并且m_pAdoRecordset是一个_RecordsetPtr.我在这个例子中更改了SQL表的名称,以便它们在这里变得敏感.)

上面的代码将返回一行有一个名字的狗'%bob%',但我希望它返回所有在他们的名字中有鲍勃的狗.

sql parameters pervasive sql-like

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

Mysqli参数绑定问题

我需要额外的一双眼睛.任何帮助将不胜感激.这是一个非常简单的搜索查询,但无论出于何种原因,我找不到该错误.好吧,我知道bug在哪里.我只是无法超越它.无论如何.....

我从POST变量中获取搜索值,设置该变量,然后按如下方式设置列变量...

$term = "'%".$_POST['searchTerm']."%'";
$field = "columnName";
Run Code Online (Sandbox Code Playgroud)

当我回应这些时,它们会完美地出现.因此,如果我在表单中键入"a",我将回显'%a%'和columnName.

然后我准备查询并绑定参数如下...

$suquery=$dbCon->prepare("select * from Table where ? LIKE ?");
$suquery->bind_param('ss', $field, $term);
$suquery->execute();
Run Code Online (Sandbox Code Playgroud)

结果总是返回0行.我发现,当我玩这个时,没有绑定参数正常工作,即使它应该如此回应.例如,当我更改查询以便列被硬编码并且仅绑定搜索项时....

$suquery=$dbCon->prepare("select * from Table where columnName LIKE ?");
$suquery->bind_param('s', $term);
$suquery->execute();
Run Code Online (Sandbox Code Playgroud)

我仍然得到零返回的行.这告诉我,即使$ field回声为'%a%',某些东西仍然没有关闭.我真的很茫然.同样,当我硬连接搜索词并绑定列时......

$suquery=$dbCon->prepare("select * from Table where ? LIKE '%a%'");
$suquery->bind_param('s', $field);
$suquery->execute();
Run Code Online (Sandbox Code Playgroud)

我得到了太多的行返回.它实际上从表中拉出行,其中任何列中的值包含字母"a".因此,列或术语都没有正确绑定.劳动节!

php mysql mysqli parameterbinding sql-like

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

有没有办法在MySQL中结合IN和LIKE?

我目前正在运行这样的查询:

SELECT *
  FROM email
 WHERE email_address LIKE 'ajones@%'
    OR email_address LIKE 'bsmith@%'
    OR email_address LIKE 'cjohnson@%'
Run Code Online (Sandbox Code Playgroud)

大量的OR人困扰我.有没有办法用类似于IN运算符的东西来浓缩它,例如:

SELECT *
  FROM email 
 WHERE email_address LIKE ('ajones@%', 'bsmith@%', 'cjohnson@%')
Run Code Online (Sandbox Code Playgroud)

或者这只是一厢情愿的想法?

mysql sql-like

4
推荐指数
2
解决办法
3010
查看次数

如果使用declare参数,sql就像查询一样慢但如果没有则快

SQL 2008:这很慢(需要1 1/2分钟):

declare @p1 varchar(50)
set @p1 = '976j%'
select * from invsearch_query where comparepnfwd like @p1

这需要不到一秒钟:

select * from invsearch_query where comparepnfwd like '976j%'

为什么???

sql performance sql-server-2008 sql-like

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

SQL子句和LIKE在where子句中

我一直在打破这个希望,这是可能的

declare @locationType varchar(50);
declare @SearchTerm NVARCHAR(100);

SELECT column1, column2
FROM whatever
WHERE
CASE @locationType
    WHEN 'location' THEN account_location LIKE @SearchTerm
    WHEN 'area' THEN Area LIKE @SearchTerm
    WHEN 'division' THEN xxx_location_division LIKE @SearchTerm
END
Run Code Online (Sandbox Code Playgroud)

我在这里复制了另一个相关帖子的代码.

我收到错误:

关键字"LIKE"附近的语法不正确.

sql search case switch-statement sql-like

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

来自C#的MS Access SQL LIKE查询

我有Ms Access的查询,我使用C#和Ole DB命令.它适用于Ms Access,但是当我使用OleDB从C#传递查询时,没有任何反应.无论如何这是我的代码:

SQL查询

SELECT * FROM tblIssue WHERE  id LIKE '*2*' AND dateChecque LIKE '**'AND +
issueTo LIKE '**' AND byTheName LIKE '**' AND bankName LIKE '**' AND accountNo LIKE '**' +
AND checqueNo LIKE '**' AND amount LIKE '**' AND being LIKE '**'   AND whoDeleted LIKE '**' +
AND whyDeleted LIKE '**' AND dateCreated LIKE '**';
Run Code Online (Sandbox Code Playgroud)

C#代码

try
{
    DataTable newDt = new DataTable();
    OleDbDataAdapter newSda = new OleDbDataAdapter(sqlQuery , conn);
    newSda.Fill(newDt);

    if (newDt.Rows.Count > 0)
    { …
Run Code Online (Sandbox Code Playgroud)

c# ms-access ms-access-2010 sql-like

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

SQL LIKE%NOT SEARCHING

我想使用SQL LIKE函数执行简单搜索.不幸的是,由于某种原因,它似乎没有起作用.以下是我的代码.

private void gvbind()
{
    connection.Open();
    string sql = "";

    if (txtSearch.Text.Trim() == "")
    {
        sql = "SELECT a.cname,[bid],b.[bname],b.[baddress],b.[bcity],b.[bstate],b.[bpostcode],b.[bphone],b.[bfax],b.[bemail] FROM [CLIENT] a INNER JOIN [BRANCH] b ON a.clientID=b.clientID ORDER BY a.[clientID]";
    }
    else
    {
        sql = "SELECT a.cname,[bid],b.[bname],b.[baddress],b.[bcity],b.[bstate],b.[bpostcode],b.[bphone],b.[bfax],b.[bemail] FROM [CLIENT] a INNER JOIN [BRANCH] b ON a.clientID=b.clientID WHERE b.[bname] LIKE '%@search%' ORDER BY a.[clientID]";
    }

    SqlCommand cmd = new SqlCommand(sql,connection);
    cmd.Parameters.AddWithValue("@search", txtSearch.Text.Trim());
    cmd.CommandType = CommandType.Text;
    SqlDataAdapter adp = new SqlDataAdapter();
    adp.SelectCommand = cmd;
    DataSet ds = new DataSet();
    adp.Fill(ds); …
Run Code Online (Sandbox Code Playgroud)

c# sql sql-server asp.net sql-like

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

Golang中的跨数据库准备语句绑定(如同和在哪里)

在阅读了很多教程之后,我发现有很多方法可以在Go中的预准备语句中绑定参数,其中一些是

SELECT * FROM bla WHERE x = ?col1 AND y = ?col2
SELECT * FROM bla WHERE x = ? AND y = ?
SELECT * FROM bla WHERE x = :col1 AND y = :col2
SELECT * FROM bla WHERE x = $1 AND y = $2
Run Code Online (Sandbox Code Playgroud)

第一个问题,绑定参数的跨数据库方式是什么?(适用于任何数据库)

第二个问题,我没有读过关于LIKE语句的教程,如何LIKE正确绑定-statement的参数?

SELECT * FROM bla WHERE x LIKE /*WHAT?*/
Run Code Online (Sandbox Code Playgroud)

第三个问题,也没有给出IN语句的例子,如何IN正确绑定语句的参数?

`SELECT * FROM bla WHERE x IN ( /*WHAT?*/ …
Run Code Online (Sandbox Code Playgroud)

sql prepared-statement go where-in sql-like

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

使用like运算符检查配置单元中的模式

我需要从蜂巢表中检索列,该蜂巢表必须以大写字母开头,以数字结尾。我用这个查询从tab1选择* * col1像'[AZ]%[0-9]'; 但是无法检索记录,只能得到空结果。

regex sql hive hiveql sql-like

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