标签: sql-like

MySQL - 使用 INNER SELECT 进行更新

我想做这样的事情,但似乎我做不到:

UPDATE products p2
SET
manufacturer = 
(
SELECT manufacturer
FROM products p, manufacturers m, etc.
WHERE
...other stuff...
p.name LIKE CONCAT('%',m.name,'%')    
AND p.id = p2.id
)
WHERE manufacturer = 0
Run Code Online (Sandbox Code Playgroud)

错误是:#1093 - 您无法在 FROM 子句中指定用于更新的目标表“p2”

问题是我的表中有一个制造商字段,但一些制造商名称位于product_name-string而不是制造商字段中,所以我必须通过product_name获取制造商id并更新其制造商的产品表ID。

我可以分两步完成,但我喜欢一步完成。

mysql select sql-like

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

按空格分隔关键字并搜索MySQL数据库

我正在使用 PHP 和 MySQL。我将在下面提供一个简单的表格:

------------------------------------------------------
|  id |                    text                      |
------------------------------------------------------
|  1  | The quick brown fox jumped over the lazy dog | 
------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

我希望用户能够使用以空格分隔的关键字进行搜索。我有一个简单的 SQL 查询,SELECT * FROM table WHERE text LIKE %[$keyword]%这意味着如果我搜索“The quick fox”,我不会得到任何结果。有没有办法用空格分隔关键字,所以如果我搜索“The quick fox”,它将运行 3 次搜索。一个用于“The”,一个用于“quick”,一个用于“fox” - 删除所有空格。尽管它应该只显示一个结果,因为它都属于同一行而不是 3 个,因为所有 3 个关键字都与该行中的数据匹配。

做到这一点的最佳方法是什么?总是欢迎所有可以做得更好的建议。谢谢!

[编辑]

现在才想到这一点,用逗号 (,) 分隔关键字会是更好的选择吗?

mysql keyword sql-like

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

带有范围的 MySQL LIKE 不起作用

我有一个数据库表mytable,列采用 Varchar 格式,列日期为 Datetime 值。我想用按日期分组的某些参数来计算名称。这是我所做的:

SELECT
    CAST(t.date AS DATE) AS 'date',
    COUNT(*) AS total,
    SUM(LENGTH(LTRIM(RTRIM(t.name))) > 4 
        AND (LOWER(t.name) LIKE '%[a-z]%')) AS 'n'
FROM
    mytable t
GROUP BY 
    CAST(t.date AS DATE)
Run Code Online (Sandbox Code Playgroud)

似乎这里的范围语法有问题,如果我只是这样做,LIKE 'a%'它确实会正确计算所有以“a”开头的字段。但是,上面的查询为 n 返回 0,尽管应该计算包含至少一个字母的所有字段。

mysql sql-like

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

像搜索一样在mysql中包含空格

我在某些情况下使用 mysql like 关键字时遇到问题。我的要求是这样的。首先,当我搜索 时'ABC',结果应该找到ABCandABCdef但不是 xyzABCdef or xyzABC。乍一看使用起来似乎很简单ABC%。但在我搜索的情况下'heart%',它不会返回具有的行'liver heart',因为它只返回heart在字符串开头具有的行。然后我尝试使用% heart%。此返回的行具有'liver heart'但不返回那些在字符串开头具有心脏的行。我有点被困在这里......所以大家帮助我。

编辑 在你们的帮助下,我提出了以下解决方案,但仍然给我带来了一些问题。

    SELECT q.question_id, q.question, q.date,p.fname,p.lname,p.phys_id,
p.pic_path  
            FROM questions q JOIN physiciansprofile p ON p.phys_id=q.phys_id   
         WHERE  q.question  LIKE 'heart%' OR question LIKE '% heart%' 
            AND q.question LIKE 'liver%' OR q.question LIKE '% liver%' 
    ORDER BY q.date DESC LIMIT 0,10;
Run Code Online (Sandbox Code Playgroud)

但是这个查询也返回了heart failuresymptoms liver有没有解决这个问题的方法。我需要获得包含 和 的结果,heart并且 …

mysql sql-like

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

Python/SQLite3 在 WHERE 子句中转义

我应该如何在Python中为SQLite3进行真正的转义?

\n\n

如果我用谷歌搜索它(或搜索 stackoverflow),就会有大量的问题,每次的回答都是这样的:

\n\n
dbcursor.execute("SELECT * FROM `foo` WHERE `bar` like ?", ["foobar"])\n
Run Code Online (Sandbox Code Playgroud)\n\n

这有助于防止 SQL 注入,如果我只用“=”进行比较就足够了,但它当然不会删除通配符。

\n\n

所以如果我这样做

\n\n
cursor.execute(u"UPDATE `cookies` set `count`=? WHERE `nickname` ilike ?", (cookies, name))\n
Run Code Online (Sandbox Code Playgroud)\n\n

一些用户可以为昵称提供“%”,并用一行替换所有 cookie 条目。 \n我可以自己过滤它(呃\xe2\x80\xa6 无论如何,我可能会忘记那些鲜为人知的通配符之一) ,我可以在昵称和昵称上使用小写字母,并将“ilike”替换为“=”,但我真正想做的是:

\n\n
foo = sqlescape(nick)+"%"\ncursor.execute(u"UPDATE `cookies` set `count`=? WHERE `nickname` ilike ?", (cookies, foo))\n
Run Code Online (Sandbox Code Playgroud)\n

python sql sqlite escaping sql-like

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

带有 if 语句和 LIKE 运算符的 MySql SELECT

我在一个广告网站上工作。

我有一张桌子,每天有一列。我需要在表格中检查哪些广告被保存为默认值以仅更新这些广告。

我试过这个,但它不起作用。

SELECT Monday if (Monday LIKE '%default%'),
Tuesday if (Tuesday LIKE '%default%')
FROM `Ad_Relationshp`
Run Code Online (Sandbox Code Playgroud)

MySql 给了我这个错误:#1064 - 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取Ad_Relationshp在第 1 行的“if (Monday LIKE '%default%') FROM LIMIT 0”附近使用的正确语法。我尝试将语法更改为我能想到的所有内容,但我仍然遇到同样的错误。

mysql select if-statement sql-like

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

使用带有 LIKE % 运算符的绑定变量

在我的 PL/SQL 中有这个使用绑定变量的大动态 SQL。我使用 DBMS_SQL 包来绑定和执行生成的查询。

根据某些标准,将 where 子句添加到动态 SQL 中。当我只使用“in”或“=”来匹配我的绑定变量时,一切正常,结果返回速度非常快。

例子:

(servedparty = :bv_ or servedpartyimsi = :bv_)

但是,当我执行以下操作时:

(servedpartyimei like :bv_)
Run Code Online (Sandbox Code Playgroud)

并提供一个像 12345679890% 这样的值,查询需要非常非常长的时间。

我也试过这样的事情

(servedpartyimei like :bv_||'%')

然后提供没有 '%' 的值,但它给出了相同的结果

当我在没有绑定变量的情况下执行查询但只放置硬编码值时,结果也会立即返回。

我在这里做错了吗?不要像 LIKE 运算符那样绑定变量?有任何想法吗?

谢谢你。

oracle plsql bind-variables sql-like

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

如何在HQL中使用NOT LIKE?

我有一个实体如下

public class Employee implements Serializable {


@Id
@Column(name = "EMPSEQ")
@GeneratedValue(strategy = GenerationType.AUTO)
private Long empSeq;
@Column(name = "EMPID")
private String empId;
@Column(name = "WINDOWSLOGINID")
private String logInId;

// assume respective getter and setter methods
}
Run Code Online (Sandbox Code Playgroud)

我想查询 logInId 不以“5”开头的所有行

我尝试了下面的代码:

query = session.createQuery("select * from Employee e where e.logInId not like 5%");
Run Code Online (Sandbox Code Playgroud)

上面的代码不起作用。NOT LIKE正确的使用方法是什么HQL

java hibernate hql sql-like

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

SELECT FROM Table WHERE 不部分的确切数字位于字符串 SQL 中

我有一个表,其中包含一堆用逗号分隔的数字。

我想从表中检索字符串中包含确切数字而不是部分数字的行。

例子:

CREATE TABLE IF NOT EXISTS `teams` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `uids` text NOT NULL,
  `islive` tinyint(1) NOT NULL DEFAULT '1',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;

INSERT INTO `teams` (`id`, `name`, `uids`, `islive`) VALUES
(1, 'Test Team', '1,2,8', 1),
(3, 'Test Team 2', '14,18,19', 1),
(4, 'Another Team', '1,8,20,23', 1);
Run Code Online (Sandbox Code Playgroud)

我想搜索 1 在字符串中的位置。

目前,如果我使用 Contains 或 LIKE,它会返回所有带有 1 的行,但 18、19 等不是 1,但其中确实有 1。

我在这里设置了一个sqlfiddle

我需要做正则表达式吗?

regex mysql sql contains sql-like

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

如何在 LIKE 过滤器中使用下划线字符给出列中的所有结果

我正在尝试在 where 子句中使用下划线使用类似条件来过滤我的 sql 查询。但是,当我过滤时,我想要所有仅包含 TS_AW19 的值,而不是所有包含 TS 的值,这是我的查询当前给我的。有人可以帮助我使用正确的语法来用于下面的查询吗?

SELECT 
date,
creative_name,
SUM(revenue)*2 as spend
FROM `crate-media-group-client-data.DV360_ALL.GGLDV360BM_CREATIVE_*`
WHERE advertiser LIKE '%Topshop/Topman%' AND creative_name LIKE '%TS_AW19%' AND date = '2019-09-20'
GROUP BY 1,2 
ORDER by creative_name
Run Code Online (Sandbox Code Playgroud)

注意:我对此查询使用大查询语法

sql google-bigquery sql-like

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