我在Microsoft SQL Server上发现这很奇怪:
SELECT * FROM deliveries WHERE code LIKE '01999195000%'
-- 9 rows returned. Works.
DECLARE @a VARCHAR(10)
SET @a='01999195000%'
SELECT * FROM deliveries WHERE code LIKE @a
-- 0 rows returned? Why not?
SET @a = '01999195000'
SELECT * FROM deliveries WHERE code LIKE @a + '%'
-- 9 rows returned. Works.
Run Code Online (Sandbox Code Playgroud)
搜索包含%字符的@a和没有添加'%'的@a之间有什么不同?
如果你们中的任何一个SQL Guru可以分享你的想法,那就太好了.
我正在尝试将数据从一个表复制到另一个表.
这是我的发言:
UPDATE tblMerchants T,
retailers R
SET T.linklabel = R.linklabel,
T.logo_image = R.logo_image,
T.screen_image = R.screen_image,
T.category = R.category,
T.meta_description = R.meta_description,
T.meta_title = R.meta_title,
T.meta_keywords = R.meta_keywords,
T.intro = R.intro,
T.permalink = R.permalink,
T.excerpt = R.excerpt,
T.main_link = R.main_link,
T.related_blog_post = R.related_blog_post,
T.active = R.active,
T.homepage_featured = R.homepage_featured
WHERE T.homepageurl LIKE '%R.linklabel%'
Run Code Online (Sandbox Code Playgroud)
例如,T.homepageurl看起来像http://www.amazon.com/和R.linklabel看起来像amazon.com.所以我无法弄清楚为什么它不起作用.我没有收到任何错误,只是说有0行受到影响.
在我的数据库中,我有一个"year"列,它是一个整数.
如何使用Criteria API(而不是HQL)搜索哪些记录包含,例如年份列中的"196 ..."?
我认为它应该是Restrictions.like,但我得到了例外:
__PRE__
我有一个表' MyTable ',它有一些商业逻辑.此表有一个名为Expression的列,其中包含使用其他列构建的字符串.我的疑问是
Select Value from MyTable where @Parameters_Built like Expression
Run Code Online (Sandbox Code Playgroud)
变量@Parameters_Built是通过连接所有输入参数构建的.
在我目前的情况下,
@Parameteres_Built='1|2|Computer IT/Game Design & Dev (BS)|0|1011A|1|0|'
Below are the expressions
---------------------
%%|%%|%%|0|%%|%%|0|
---------------------
1|2|%%|0|%%|%%|0|
---------------------
1|%%|%%|0|%%|%%|0|
---------------------
Run Code Online (Sandbox Code Playgroud)
所以我的上面的查询对于所有三行都返回true.但它应该只返回第二行(最大匹配).
我只是不需要针对此方案的修复解决方案.这只是一个例子.我需要一个像选择最佳匹配的解决方案.任何的想法?
我可以在查询中使用什么而不是LIKE?由于LIKE对搜索条件的性能影响较差.
我的情景:
SELECT
*
FROM
MetaDataTag
WHERE
Name LIKE 'SUN RCC%'
Run Code Online (Sandbox Code Playgroud)
我不能使用包含作为表格上的全文索引,我不选择.
建议将非常有帮助.
我将这样存储的值存储在字段中1,255,230,265。
MySQL中是否有一个函数可以为我提供该字符串中的第二个值?在这种情况下会是255。
我尝试使用locate,但这似乎并不意味着这样做。
有没有办法比较MySQL中两列的值?例如,如果我有一个表:
+----------------+
| Col1 | Col2 |
|----------------|
| abc | 123abc |
| def | 234def |
| | 123ghi |
+----------------+
Run Code Online (Sandbox Code Playgroud)
我想检索Col2包含以下值的所有条目Col1:
+---------+
| NewCol |
|---------|
| 123abc |
| 234def |
+---------+
Run Code Online (Sandbox Code Playgroud)
我该怎么办呢?
这是一个伪查询,可以进一步解释.
SELECT Col2 FROM TableName WHERE Col2 LIKE Col1;
Run Code Online (Sandbox Code Playgroud) 在SQL Server中,我可以使用此SQL语句:
SELECT *
FROM Customers
WHERE Country LIKE '%land%';
Run Code Online (Sandbox Code Playgroud)
此查询将返回包含字符串的值land.
是否可以按字符串的位置对返回值进行排序land?
例:
输入值:"新西兰,美国,Landcountry,Alandia"
产值:"Landcountry,Alandia,New Zealand"
我正在构建一个简单的搜索功能,我想找到字符串字段中包含字符串的所有记录.
这是我尝试过的.
term = "Moby"
MyApp.Book
|> where([p], String.contains?(p, term))
|> order_by(desc: :inserted_at)
Run Code Online (Sandbox Code Playgroud)
这将返回以下书籍:
但我得到:
`String.contains?(p, term)` is not a valid query expression
Run Code Online (Sandbox Code Playgroud) 在Oracle中使用SQL 运算符时,如何转义通配符(_和%)LIKE?
我今天遇到了一个愚蠢的问题.我需要_使用在varchar列上搜索下划线的存在LIKE.它不起作用 - 正如预期的那样 - 因为下划线是根据SQL的通配符.这是我的(简化)代码:
create table property (
name varchar(20),
value varchar(50)
);
insert into property (name, value) values ('port', '8120');
insert into property (name, value) values ('max_width', '90');
insert into property (name, value) values ('taxrate%', '5.20');
Run Code Online (Sandbox Code Playgroud)
我在PostgreSQL中尝试了以下查询,它们返回我想要的行:
select * from property where name like '%\_%'; -- should return: max_width
select * from property where name like '%\%%'; -- should return: taxrate%
Run Code Online (Sandbox Code Playgroud)
不幸的是,它在Oracle 12c中不起作用.是否存在逃避通配符的"标准"方式?或者至少在Oracle中有效的东西?